不知道为什么我对此有错,有人可以帮我吗。另外,我知道大小不同且不正确,我现在不担心这一点。我只是想测试一下。
#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;
}
答案 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。照原样,取消引用数组将访问尚未设置的指针。