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