C语言复制字符串问题

#include<stdio.h>#include<conio.h>voidtailAppend(chars1[],chars2[]){/**/inti=0,j=0;wh... #include <stdio.h>
#include <conio.h>

void tailAppend(char s1[],char s2[])
{ /**/

int i=0,j=0;
while (s1[i]) i++;
while (s2[j]) s1[i++]=s2[j++];
s2[j]='\0';

/**/
}

int main()
{ char str1[64]="abcd", str2[64]="lmn";
tailAppend(str1,str2);
printf("str1:%s\n",str1);
getch();
return 0;
}

上面是标准答案
请问 s2[j]='\0';怎么理解啊
能删掉吗
展开
 我来答
匿名用户
2016-06-22
展开全部
不能删除。因为'\0'是字符串结束符,读内存,遇到它就表示一个字符串结束了;
如果没有s2[j]='\0'; 则在读字符串s2的时候,很可能紧接着的内存还有数据,就会一并被认为是s2字符串的内容了。

看起来,你是要实现strcat的功能!
更多追问追答
追问
请问为什么没有s1[1]='\0';
题目要求不能使用strcat。。。 如果用strcat的话就不用s2[j]='\0';了吗
追答

肯定要用的。即便strcat也是这样处理字符串结束符。

char *strcat(char *str1, char *str2)  
{  
    if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!";  
    char *pt = str1;  
    while(*str1!='\0') str1++;  
    while(*str2!='\0') *str1++ = *str2++;  
    *str1 = '\0';  
    return pt;  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式