这是我的代码:
while (fgets(line, 1000, fp) != NULL)
{
printf("backin!");
if ((result = strtok(line,delims)) == NULL)
printf("Need from_id, to_id, and distance on each line of input file.\n");
else
from_id = atoi(result);
printf("check!\n");
if ((result = strtok(NULL,delims)) == NULL)
printf("Need from_id, to_id, and distance on each line of input file.\n");
else
to_id = atoi(result);
printf("check!\n");
if ((result = strtok(NULL,delims)) == NULL)
printf("Need from_id, to_id, and distance on each line of input file.\n");
else
distance = atof(result);
printf("check!\n");
printf("from_id: %d, to_id: %d, distance: %f",from_id, to_id, distance);
if(BuildGraph(graph_array, from_id, to_id, distance) == -1)
printf("Error while filling in graph type");
printf("check!\n");
}
所有这些 printfs 只是为了定位段错误发生的位置。输入文件有 100 行长,这个函数工作了 15 次,完成了所有的检查,然后在 "backin!" 之前 seg faults 在第 16 次迭代时打印。
我查看了输入文件,并没有任何可疑之处(绝对少于 1000 个字符),似乎 fgets 有问题,但我不知道是什么。