显然 C 不喜欢这样的声明:
char some_array[n] = "Text here";
<== 其中 n 是一个合适大小的 int....
嗯,实际上,我猜它喜欢它就好了,但输出让我感到惊讶!这是一个例子。
char two[4] = "What";
printf("2: %s \n", two);
输出是:
2: WhatWhat
WhatWhatWhatWhat 到底在做什么?!
所以我尝试添加:
char test[4] = "abcd";
输出是:
2: WhatWhatabcd
3: abcd
是的,我明白了,我的语法不受欢迎。但为什么?!实际变量发生了什么?
最佳答案
字符串文字有一个额外的字符 - nul 终止符。
所以你需要让它的长度为 5:
char two[5] = "What";
或者如果可能的话:
char two[] = "What";
(您遇到缓冲区溢出或其他问题)
关于C:令人惊讶的数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15151013/