定义一个数组时,到底要不要给”\0"留个位置
char string0[3] = { "abc" };//没有 \0 的位置,输出会越界
但是
#include
int main(void) {
char a[5];
scanf("%s", a);
printf("%s", a);
return 0;
}
定义数组a的长度为5,输入“hello”的长度为5,结果能正常输出,输出“hello”
为什么不会出现上一个代码的问题呢?定义一个数组时,到底要不要给”\0"留个位置?请求帮忙解决一下,谢谢。
你如果相当字符串用,那当然要留出存储'\0'的位置。
定义数组a的长度为5,输入“hello”的长度为5,结果能正常输出,输出“hello”==第二段代码也是越界的!!!可能是运气好而已。越界的内存没有被占用