我似乎无法弄清楚我做错了什么。我只是在处理一个字符列表并尝试打印它们。
char *name[] = {"RGS", "O", "NRGY", "SIG", "BML-O", "BHI", "KSU", "ORN"};
void function() {
int i;
//for (i =0; i<sizeof(name) / sizeof(char); i++) {
for (i =0; name[i] != NULL; i++) {
printf ("%s \n", name[i]);
}
}
当我使用第一个 for 循环(注释掉的那个)时,它会打印出列表,但最后有两个项目表示(NULL)
并给出了段错误。当我使用第二个 for 循环(未注释的循环)时,它会打印所有内容,但也会出现段错误。
输出:
RGS
O
NRGY
SIG
BML-O
BHI
KSU
ORN
Segmentation fault: 11
编译代码(gcc ./learningC.c
)时我没有收到任何错误,如果我注释掉这个函数,我也没有收到任何错误(这让我认为这是代码的问题所在)。我想知道我做错了什么?