尝试打印数组时不断出现分段错误(核心转储)
Keep Getting Segmentation Fault (core dump) when trying to print array
不知道为什么我会在这方面出错,有人可以帮我解决一下。另外,我知道尺寸不同而且不正确,我现在并不担心。我只是想测试一些东西。
#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;
}
您未接来电 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]);
}
您的 for
循环没有将 i
设置回数组的开头。即,在访问 printf
中的 csvArray
之前将 i
设置为 0。照原样,取消引用数组正在访问尚未设置的指针。
不知道为什么我会在这方面出错,有人可以帮我解决一下。另外,我知道尺寸不同而且不正确,我现在并不担心。我只是想测试一些东西。
#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;
}
您未接来电 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]);
}
您的 for
循环没有将 i
设置回数组的开头。即,在访问 printf
中的 csvArray
之前将 i
设置为 0。照原样,取消引用数组正在访问尚未设置的指针。