繁体   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