2
我似乎無法弄清楚我做錯了什麼。我只是簡單地對一系列字符進行處理並嘗試打印它們。迭代遍歷給出段錯誤的字符列表
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
)時,我沒有得到任何錯誤,如果我註釋掉這個功能我沒有得到任何錯誤(這讓我想起了這個代碼區那就是問題所在)。我想知道我做錯了什麼?
你說,它不一定是終止與我想要的方式?但是註釋掉的for循環是基於sizeof的,它仍然具有相同的效果(seg故障)。我不明白如何正確迭代列表。 –
我已經更新了我的答案,以解決第一個循環。 –
它的工作!謝謝Ned。我認爲char和char *的大小是一樣的。感謝Ned! –