c - 使用 C 中的指针在字符串数组中出现段错误

标签 c arrays string pointers

我在这里要做的是使用指针打印字符串数组的所有元素。我不使用计数器的原因是因为我不知道数组的大小。我只知道它总是以空字符结尾。运行下面的代码给我直到最后一个(“星期五”)的元素。然后它给了我一个段错误。我真的不明白为什么。我们将不胜感激。

#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 为 NULL。通过使用 **parray,您将取消引用 NULL 指针。将该行更改为:

while (*parray != NULL){

我建议将初始化更改为:

char *array[]={"mon","tue","wed","thu","fri",NULL};

这更具可读性。

关于c - 使用 C 中的指针在字符串数组中出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037277/

相关文章:

java - 我如何在 J2ME 中拆分字符串?

Python C Api 检查 PyObject 是否指向特定的 PyCFunction

arrays - 指向 slice 和数组的指针

javascript - 在javascript中从数组中读取数据

python - 如何在 python 中将字节作为输入而不进行任何操作?

c# - 如何将字符串转换为整数表示并将其改回

python - 使用 C API 创建在 python 中声明的 python 类的实例

c - 在 win32 api 中的文本文件末尾追加文本

java - Java 中的节点,来自 C 背景

javascript - 创建自动填充 JavaScript 数组