字符串长度包不包括\0啊?
原理讲解:字符串是以/0标志为结尾的,libc库里面,所有字符串操作相关的,比如strcpy,strcat,strlen 的原理都是找\0标志作为结尾。
本题答案:长度不包括/0, s1[i]=‘\0’ 的意义就是没有找到字符串结尾标志就继续往下循环找
长度不包括\0
字符串是以\0结尾的
字符串长度不包括\0
,但是字符串结尾必须有一个\0
,否则输出就会把字符串后面无意义的内容也输出了。
长度不包括
但size包括
1.长度不包括\0,\0只作为结束符
2.因为没有对s1和s2进行初始化的操作,数组里面是随机数,如果不显式的给结尾赋值成\0,就有可能出现字符串后面还有随机字符的情况
s1[i]='\0'是在字符串末尾加上结束符,之后用的时候读到结束符标志着字符串读取完成,
否则后一直向后读取,导致越界
puts(), gets()都是以‘\0’结尾的。gets获取的字符串,会默认串尾补‘\0’;而puts要求字符串必须以‘\0’结尾。
在while循环中,s2按照字符一个一个拷贝给s1,当遇到\0时结束循环,此时\0是没有拷贝给s1的,所以在结束循环后,在s1最后加个\0表示字符串结尾了。