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