为什么这道c语言题要加 s2[i]='\0' ???
答案:1 悬赏:10 手机版
解决时间 2021-04-06 15:28
- 提问者网友:我的未来我做主
- 2021-04-06 10:20
为什么这道c语言题要加 s2[i]='\0' ???
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-04-06 11:56
对于这个程序,strcat函数把s2缀合到s1上。此时s1比s2的有效字符长度要长,接下来的步骤是让s2的字符对应与截止到s1的空字符之前的所有对应位置的字符同步(不包括s1的空字符),而由于s1比s2长,所以导致s2被同步后,并不正确地以空字符结束,如果不对s2做结尾处理,则在接下来的puts输出的时候会输出奇怪的东西。
例如s1(假定字符串不含空格)是:a c j l \0
s2:b c s \0
strcat之后的结果会使得s1变成:a c j l b c s \0
循环之后会使s2变成:a c j l b c s ? ? ? ?...(后面全是)
其中问号是未定义的值,不一定是什么字符。
如果不s2[i]='\0'那么puts的输出就是:acjlbcs(后面还有一大堆乱七八糟的东西)
而做过处理后,输出结果就是正常的acjlbcs
望采纳追答(注意,不作处理的话有可能实际运行的时候看起来也是正常的,原因有二:①碰巧第一个?就是\0,②:被一起输出的?都是不可见字符)
例如s1(假定字符串不含空格)是:a c j l \0
s2:b c s \0
strcat之后的结果会使得s1变成:a c j l b c s \0
循环之后会使s2变成:a c j l b c s ? ? ? ?...(后面全是)
其中问号是未定义的值,不一定是什么字符。
如果不s2[i]='\0'那么puts的输出就是:acjlbcs(后面还有一大堆乱七八糟的东西)
而做过处理后,输出结果就是正常的acjlbcs
望采纳追答(注意,不作处理的话有可能实际运行的时候看起来也是正常的,原因有二:①碰巧第一个?就是\0,②:被一起输出的?都是不可见字符)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯