簡體   English   中英

使用C中的指針在字符串數組中進行段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM