我要做的是使用指针打印字符串数组的所有元素。我不使用计数器的原因是我不知道数组的大小。我只知道它总是以空字符结尾。运行下面的代码将提供元素,直到最后一个(“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最后一个元素的问题。

while (**parray != '\0'){

对于最后一行,*parray为空。通过使用**parray,可以取消对空指针的引用。将该行更改为:
while (*parray != NULL){

我建议将初始化更改为:
char *array[]={"mon","tue","wed","thu","fri",NULL};

这更容易阅读。

10-04 20:21