Code Bye

c strlen问题

void main()
{
char s1[10] = { “m”, “o”, “b”, “i”, “l” };
char s2[20] = { “A”, “N”, “S”, “I”, “\0”, “C”, “+”, “+” };
char s3[6] = { “I”, “S”, “O”, “C”, “+”, “+” };
printf(“%d\n”, strlen(s1));
printf(“%d\n”, strlen(s2));
printf(“%d\n”, strlen(s3));
system(“pause”);
}
为什么本人的vs2013跑的 s3的大小是20
解决方案

5

已经超出数据范围,结果不确定
char s3[7] = { “I”, “S”, “O”, “C”, “+”, “+” };

5

strlen碰到0才算结束……
你的字符串中没有0,所以会越界查找,直接有找到0为止。

10

char s3[6] = { “I”, “S”, “O”, “C”, “+”, “+” };你这样写,使得s3这个数组没有”\0″结尾
那执行strlen的时候就是看脸了,返回一个什么值都有可能

5

strlen是以”\0″为终结的,和sizeof不同。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c strlen问题