str[4]修改为str[5]
http://blog.csdn.net/guanyasu/article/details/51980692
C 里面的字符数组如果是手动构造的话一定要注意在最后加上 '\0',这不是语法上的要求,而是很多 C 内置的函数都依赖这个 '\0'。比如这个 printf() 函数
将str[4]改为str[5],因为tree后还有一个字节/0.
str[4]修改为str[5],C 里面的字符数组如果是手动构造的话一定要注意在最后加上 '\0',刚刚好存在数组溢出
1.如果你想定义字符串,改为 char str[5]="tree";
你在这里定义了一个字符串,内容是 tree ,虽然这里只有4个字节,但在定义字符串时需要多留一个字节的空间给 字符串结束符'\0'。
'\0'是由C编译系统自动加上的,不需要手动添加,只需要留出一个字节空间就行。
此时sizeof(str)应该是5,但strlen(str)是4(strlen不将'\0'计算在内)。
2.如果你想定义一个 字符型数组,此时不需要字符串结束符'\0',那么可写为 char str[4]={'t','r','e','e'};
此时sizeof(str)是4。
是数组的长度不够,定义的时候要小心,每个字符川输入的时候末尾上都会补上一个斜杠0,所以的定义的长度要再加一哦