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));

 

}

本回答被提问者采纳