C语言用指针编程实现strcat函数的功能

请大神们帮我看看我的程序为什么实现不了。
/*编程实现两个字符串进行连接操作,并在main函数中验证*/
#include <stdio.h>
strcopy(char *str1,char *str2)
{
while((*str1)!='\0')
{
*str1++;
while((*str2)!='\0')
{
*str1++=*str2++;
}
*str1='\0';
}
}
void main()
{
char str1[10],str2[10];
printf("str1:\n");
gets(str1);
printf("str2:\n");
gets(str2);
printf("连接后:%s\n",strcopy(str1,str2));

}

1、首先打开vs2014,新建一个项目。

2、添加头文件。

3、添加main主函数。

4、定义一个函数addTwoNumbers。

5、在main函数定义a,b,sum。

6、声明函数指针ptr_sum。

7、将addTwoNumbers函数地址赋值给ptr_sum。

8、运行程序,看看结果。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-10

#include<stdio.h>

#include<assert.h>

void my_strcat( char *arr1,const char *arr2)

{

char* ret=arr1;

const char* dst=arr2;

assert(arr1);

assert(arr2);

while(*ret)00  

{//将指针所指目标转移到未赋值的字符位置

ret++;

}

while(*dst)

{

*ret = *dst;

dst++;

ret++;

}

*ret=*dst;   //将' \0 '拷贝到arr1中

printf("%s\n",arr1);

}

int main()

{

char arr1[32]="I am a ";

const char arr2[]="good student!";

my_strcat(arr1,arr2);

return 0;

}

运行效果:

扩展资料:

其它方法:

#include<stdio.h>

#include<string.h>

#include<assert.h>

void my_strcat( char* arr1, const char* arr2,int n)

{

char* p = arr1;

char* q =(char *)arr2;

assert(arr1);

assert(arr2);

p = p + n;

while( *q!= '\0')

{

*p = *q;

p++;

q++;

}

*p = *q;

printf("%s\n",arr1);

}

int main()

{

char arr1[32]="I am a";

const char arr2[]=" good boy!";

int n=strlen(arr1);

my_strcat(arr1,arr2,n);

return 0;

}

本回答被网友采纳
第2个回答  推荐于2017-10-07

具体见下图:

其中char *strcat(char *str1,char *str2);是strcat函数实现的方法,main函数用于测试strcat准确性,具体如上!

第3个回答  2014-12-14
#include <stdio.h>

//strcopy(char *str1,char *str2)
char* strcopy(char *str1,char *str2)
{
/* while((*str1)!='\0')

*str1++;
while((*str2)!='\0')
{
*str1++=*str2++;
}
*str1='\0';
}
*///逻辑有问题
//先让str1指向字符串尾
char *p = str1;//存储连接后的字符串首部
while(*str1 != '\0')
++str1;
while(*str1++ = *str2++)
;
return p;//返回连接后的字符串指针
}

void main()
{
// char str1[10],str2[10];
char str1[100],str2[10];
printf("str1:\n");
gets(str1);
printf("str2:\n");
gets(str2);
printf("连接后:%s\n",strcopy(str1,str2));

}

执行结果:

第4个回答  推荐于2017-09-05

#include <stdio.h>

char *strcopy(char *str1,char *str2)

{

 char *p = str1;

 while((*str1)!='\0') str1++;

  while((*str2)!='\0')

  {

   *str1++=*str2++;

  }

  *str1='\0';

  return p;

}

void main()

{

 char str1[20],str2[10]; //开辟大一点的空间

 printf("str1:\n");

 gets(str1);

 printf("str2:\n");

 gets(str2);

 printf("连接后:%s\n",strcopy(str1,str2));

 

}

本回答被提问者采纳

C语言用指针编程实现strcat函数的功能
1、首先打开vs2014,新建一个项目。2、添加头文件。3、添加main主函数。4、定义一个函数addTwoNumbers。5、在main函数定义a,b,sum。6、声明函数指针ptr_sum。7、将addTwoNumbers函数地址赋值给ptr_sum。8、运行程序,看看结果。

...实现字符串连接函数strcat()的功能,将两个字符串连接起来
include<stdio.h>void main(){char *p(char *a,char *b);char i[20],j[20];printf("请输入字符串1:");scanf("%s", i);printf("请输入字符串2:");scanf("%s", j);\/\/p(i,j);printf("%s\\n",p(i,j));\/\/*p你要输出的是字符串,应该输入字符串连接后的字符串的地址}char ...

c语言指针实现字符拼接函数strcat
其功能为,将字符串b拼接到a的尾部,并将结果字符串返回。所以,实现该函数的思路为:1 找到字符串a的结尾;2 将b的所有字符复制到a尾部的空间中,到\\0为止。需要注意的是,复制的结果要包含b的结束符。代码如下:char *strcat(char *a, char *b){ char *p = a; while(*p) p ++; ...

如何用c语言编写strcat函数
C语言中 本身有strcat函数。如果要自己实现 可以采用指针方式:char *my_strcat(char *s, char *d){ char *r = s; while(*r) r++; while(*d) *r++=*d++; *r=0; return s;}

C语言strcat函数怎么用
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\\0')并添加'\\0'。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。strcat()函数从名称来讲就是索的含义,用途:在一个字符串的末尾增加新的字符。函数定义如下:char *strcat(char *...

C语言strcat函数怎么用
strcat(char dest,char src);参数:dest 目标数组指针 src 源字符串指针 返回值:返回指向dest的指针 函数功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\\0')并添加'\\0'。注意事项:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。使用时额外包含 include <...

c语言strcat函数怎么用
C语言strcat函数的使用方法 一、函数概述 strcat函数是C语言中用于字符串拼接的函数。它可以将一个字符串拼接到另一个字符串的末尾,并返回目标的指针。二、函数原型 strcat的函数原型为:char *strcat; 其中,dest是目标字符串,src是源字符串。三、使用步骤 1. 声明字符串变量并初始化目标字符串。例...

c语言编程怎么实现字符串连接?
在C语言中,进行字符串连接主要通过使用字符数组和指针实现。strcat函数便是完成这一操作的利器,能够将两个字符串连接在一起。strcat函数的声明为:char *strcat(char *dest, const char *src);这里dest代表目标字符数组,src代表源字符数组。函数执行后,将src中的内容追加到dest的末尾。下面是一个示例...

...程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、str...
void strcat(char *p1, char *p2){ while(*p1){ p1++;} while(*p2){ p1 = *p2;p1++;p2++;} p1 = '\\0';} 注意 p1开的数组要比p2大哦 int strlen(char *p1){ char *s=p1; \/\/将指针s指向指针p,即指向str1 while(*s) \/\/当*s不为'\\0'的时候 s++; \/\/指针指向下一个...

c语言之strcat()
strcat(t,p)这样写是不对的,t是字符型变量,而strcat的参数要求是字符指针,可以像下面这样写 char *t = new char[100];strcpy(t,"hello ");char *p= "word!";strcat(t,p);printf("%s\\n",t);delete [] t;输出hello Word!

相似回答