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';怎么理解啊
能删掉吗 展开
#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';怎么理解啊
能删掉吗 展开
1个回答
2016-06-22
展开全部
不能删除。因为'\0'是字符串结束符,读内存,遇到它就表示一个字符串结束了;
如果没有s2[j]='\0'; 则在读字符串s2的时候,很可能紧接着的内存还有数据,就会一并被认为是s2字符串的内容了。
看起来,你是要实现strcat的功能!
如果没有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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询