将 int 分配给数组时出现分段错误
Segmentation Fault while assigning int to array
我正在尝试从文件中读取一行,分隔字符,然后将它们读入 malloc'ed int 数组。当我使用 atoi 将 char 转换为 int 时,我似乎遇到了分段错误,因此我无法将 int 分配给数组。任何帮助将不胜感激。
int main(int argc, char * argv[]){
FILE *in;
in = fopen(argv[1], "r");
FILE *out;
out = fopen(argv[2], "w");
int numDays;
char ignore[256];
fscanf(in, "%d", &numDays);
fgets(ignore, sizeof(ignore), in);
int *timeArray = (int *) malloc(numDays * sizeof(int)); ;
char buffer[256];
fgets(buffer, 256, in);
const char delimiter[2] = " ";
char *token;
token = strtok(buffer, delimiter);
int index = 0;
while( token != NULL ) {
printf( "%s\n", token);
token = strtok(NULL, delimiter);
int val = atoi(token);
timeArray[index] = val;
index++;
}
return(0);
}
当没有令牌剩余时,strtok()
returns NULL
。但是你马上在上面调用atoi(token)
,如果是NULL
就会崩溃。循环条件 while (token != NULL)
无济于事,因为直到循环体结束才检查它。
您需要重构循环,以便在尝试使用结果之前完成测试。
我正在尝试从文件中读取一行,分隔字符,然后将它们读入 malloc'ed int 数组。当我使用 atoi 将 char 转换为 int 时,我似乎遇到了分段错误,因此我无法将 int 分配给数组。任何帮助将不胜感激。
int main(int argc, char * argv[]){
FILE *in;
in = fopen(argv[1], "r");
FILE *out;
out = fopen(argv[2], "w");
int numDays;
char ignore[256];
fscanf(in, "%d", &numDays);
fgets(ignore, sizeof(ignore), in);
int *timeArray = (int *) malloc(numDays * sizeof(int)); ;
char buffer[256];
fgets(buffer, 256, in);
const char delimiter[2] = " ";
char *token;
token = strtok(buffer, delimiter);
int index = 0;
while( token != NULL ) {
printf( "%s\n", token);
token = strtok(NULL, delimiter);
int val = atoi(token);
timeArray[index] = val;
index++;
}
return(0);
}
当没有令牌剩余时,strtok()
returns NULL
。但是你马上在上面调用atoi(token)
,如果是NULL
就会崩溃。循环条件 while (token != NULL)
无济于事,因为直到循环体结束才检查它。
您需要重构循环,以便在尝试使用结果之前完成测试。