[英]seg fault in an array of strings using pointers in C
我在這里嘗試做的是使用指針打印字符串數組的所有元素。 我不使用計數器的原因是因為我不知道數組的大小。 我只知道它總是以空字符結尾。 運行下面的代碼可以為我提供直到最后一個元素(“ fri”)的元素。 然后它給我一個分割錯誤。 我真的不明白為什么。 一點幫助將不勝感激。
#include <stdio.h>
int main(int argv,char *argc[]){
char *array[]={"mon","tue","wed","thu","fri",'\0'};
char **parray;
parray=array;
char *pword;
pword=&**parray;
while (**parray != '\0'){
printf("The first letter is %c\n",**parray);
while (*pword != '\0'){
printf("%c",*pword);
pword++;
}
parray++;
pword=&**parray;
}
}
這行是parray
的最后一個元素的parray
。
while (**parray != '\0'){
對於最后一行, *parray
為NULL。 通過使用**parray
,您將取消引用NULL指針。 將該行更改為:
while (*parray != NULL){
我建議將初始化更改為:
char *array[]={"mon","tue","wed","thu","fri",NULL};
更具可讀性。
最后一個元素為空字符。 將'\\0'
更改為"\\0"
。
數組中的最后一個值為零-不是包含null的字符串。 因此,涉及**parray
的測試會取消引用該零。 更改檢查以使用*parray
或將數組中的最后一個條目更改為空字符串(“”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.