简单字符串问题,求助!

tyxsoft 2004-08-30 01:55:48
main()
{
char s1[100], s2[100];
printf("String 1:\n");
scanf("%s",s1);
printf("String 2:\n");
scanf("%s",s2);
link(s1,s2);
printf("Now the string is %s\n",s1);
}
link(char str1[], char str2[])
{ int i, n;
n=strlen(str1);
for(i=0;str2[i]!='\0';i++)
str1[n+i]=str2[i];
str1[n+i]='\0'; /*一定要加上这一行*/
}
简单的字符串连接程序
源程序的倒数第二行,如果不写的话,连接后的字符串后面会出现些乱七八糟的东西,或是运行了一次之后,后面部分会一直保存在那里,请问这是为什么,大家指点,谢谢!
...全文
78 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
梁尚君 2004-08-30
  • 打赏
  • 举报
回复
同意楼上的.'\0'是字符串的结束符号.使用strlen(str[])的时候'\0'不计算在字符串长度内
iorchis 2004-08-30
  • 打赏
  • 举报
回复
楼上的说法值得强烈推广!!!不过这样改进一下----memset(pStr,0,100)----似乎好看一点点,仅仅是好看 :)
new_c 2004-08-30
  • 打赏
  • 举报
回复
恩 对的 呵呵 我也遇到过
TieShou 2004-08-30
  • 打赏
  • 举报
回复
可以在s1, s2使用之前初始化一下。
memset(s1, '\0', 100);
memset(s2, '\0', 100);
这个可是一个好的习惯,而且不会出现乱的字符了。
liushuaiboy 2004-08-30
  • 打赏
  • 举报
回复
建议楼主看看c语言的基础,呵呵
iorchis 2004-08-30
  • 打赏
  • 举报
回复
printf函数打印字串时,从参数所给地址处开始,到第一个'\0'结束,之后的被强行截断,printf把'\0'解释为字串的的结束。
  • 打赏
  • 举报
回复
char str[];的字符串结束的标志就是'\0',如果没有'\0'就认为字符串没有结束,
在c的所有处理字符串的函数中,判断字符串是否结束都是用'\0'的,所以加上'\0'
才能表示该字符串的有效字符到此为止。
02051223 2004-08-30
  • 打赏
  • 举报
回复


'\0'是字符数组的结束符号。用printf("Now the string is %s\n",s1);时必须加这个符号!否则会出现你所说的问题。即使是与编译器有关,加了也可以增加程序的可移植性。


JimmyWuMr 2004-08-30
  • 打赏
  • 举报
回复
与编译器有关. 用cc无此问题.
tyxsoft 2004-08-30
  • 打赏
  • 举报
回复
我发不了帖子吗

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧