为了模拟我正在编码的程序的操作,我试图让以下代码片段起作用。我需要将声明为const char*
的字符串(例如下面的“Eta”)添加到二维数组char[][]
中(例如{“Alpha”,“Gamma”,“Epsilon”})。这是我的几次尝试之一:
#include <stdio.h>
#include <string.h>
int main() {
char lines[4][10] = {"Alpha", "Gamma", "Epsilon"};
const char *p = "Eta";
strcpy(lines[4], p);
for (int i = 0; i < 4; i++) {
printf("%d\n", i);
printf("%s\n", lines[i]);
}
return 0;
}
这导致“堆栈粉碎”错误报告,这显然与缓冲区溢出有关,但我怀疑这里有其他意义。
虽然我试图研究char []和char *之间的区别,但我还没有找到一种有效的方法。有人可以解释我错在哪里吗?