将指针存储的字符串文字复制到字符串数组(C语言)

将指针存储的字符串文字复制到字符串数组(C语言),c,arrays,C,Arrays,这与 为了模拟我正在编写的程序的操作,我尝试让下面的代码段正常工作。我需要将声明为const char*(如下面的“Eta”)的字符串添加到二维数组char[][](如{“Alpha”、“Gamma”、“Epsilon”})中。以下是我的几次尝试之一: #include <stdio.h> #include <string.h> int main() { char lines[4][10] = {"Alpha", "Gamma", "Epsilon"};

这与

为了模拟我正在编写的程序的操作,我尝试让下面的代码段正常工作。我需要将声明为
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;
}
#包括
#包括
int main(){
字符行[4][10]={“Alpha”、“Gamma”、“Epsilon”};
const char*p=“Eta”;
strcpy(第[4]行,p);
对于(int i=0;i<4;i++){
printf(“%d\n”,i);
printf(“%s\n”,第[i]行);
}
返回0;
}
这会导致一个“stacksmashing”错误报告,它显然与缓冲区溢出有关,但我怀疑它在这里有另一种含义


虽然我试图研究char[]和char*之间的区别,但还没有找到一种有效的方法。有人能解释一下我错在哪里吗?

字符行[4][10]=
-->字符行[5][10]=或
strcpy(行[4],p)-->
strcpy(第[3]行,p)所以你还没有读过C语言的书,所以不是一个教程网站。。。。或
strcpy(第[3]行,p)注释掉
//strcpy(第[4]行,p)输出有意义吗?现在代码
strcpy(第[3/*行不是*4/],p)@忍者老天,所以这只是一个索引错误?现在我觉得自己很愚蠢。