c-尝试打印数组时,不断出现分段错误(核心转储)



不知道我为什么会在这方面出错,有人能帮我吗。此外,我知道尺寸不同而且不正确,我现在并不担心。我只是想测试一下。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[]) {

char csvDest[100] = "1000,cap_net_raw,cap_sys_admin";
char *tokptr = strtok(csvDest,",");
char *csvArray[100];
int i = 0;
while(tokptr != NULL){
csvArray[i++] = tokptr;
tokptr = strtok(NULL, ",");
}
int j;
for(j=0; j < i; j++){
printf("%sn", csvArray[j]);
}
return 0;
}

您缺少对strtok的调用。

更换

tokptr = (NULL, ",");

带有

tokptr = strtok(NULL, ",");

除非已指定,否则无法打印100个字符串。你应该更换

for(i=0; i < 100; i++){
printf("%sn", csvArray[i]);
}

带有

for(int j=0; j < i; j++){
printf("%sn", csvArray[j]);
}

您的for循环不会将i设置回数组的开头。即在访问printf中的csvArray之前,将i设置为0。按原样,取消引用数组就是访问尚未设置的指针。

相关内容

  • 没有找到相关文章

最新更新