我昨天开始学习 C,所以这可能是一个微不足道的问题,但我仍然不明白。
假设我有以下代码:
#include <stdio.h>
#include <string.h>
int main()
{
char text[8];
strcpy(text, "Lorem ");
puts(text);
strcat(text, "ipsum!");
puts(text);
return 0;
}
这将在连接字符串时(或之后)导致分段错误。但是,如果我将大小text
从 8 更改为 9,则不会。
如果我错了,请纠正我,但这是我认为正确的:
“Lorem” - 大小 6(或带有 \0 的 7)
“ipsum!” - 大小 6(或带有 \0 的 7)
“Lorem ipsum!” - 12 号(或 13 号带 \0)
那么,8/9 是从哪里来的呢?这是由执行引起的strcat
吗?还是有类似最小数组长度的东西?还是我犯了一个愚蠢的初学者错误?
提前致谢。