字符串长度方面的问题

字符串长度包不包括\0啊?

img


这个s1[i]=‘\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表示字符串结尾了。