尝试打印阵列时请保持获取分段错误(核心转储)

时间:2020-04-30 16:12:29

标签: c arrays string segmentation-fault strtok

不知道为什么我对此有错,有人可以帮我吗。另外,我知道大小不同且不正确,我现在不担心这一点。我只是想测试一下。

#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("%s\n", csvArray[j]);
        }

        return 0;
}

2 个答案:

答案 0 :(得分:3)

您错过了对strtok的呼叫。

替换

              tokptr = (NULL, ",");

使用

              tokptr = strtok(NULL, ",");

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

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

使用

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

答案 1 :(得分:2)

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

相关问题