请大神们帮我看看我的程序为什么实现不了。
/*编程实现两个字符串进行连接操作,并在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));
}
#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;
}
本回答被网友采纳执行结果:
#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));
}
本回答被提问者采纳