這裏是我的代碼:fgets期間的Seg錯誤?
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!」之前進行故障排除。打印在第16次迭代。
我翻看輸入文件,沒有什麼可疑的(絕對少於1000個字符),似乎只是fgets的一個問題,但我不知道是什麼。
通過您先前詢問的問題並接受您認爲是好的答案 – mvp
如何定義'行'?足夠容納1000個字符嗎? –
哇,就是這樣。線保存21個字符,這條線看起來像21,但我想它是22由於某種原因。將其更改爲30並且可以正常工作。謝謝。順便說一句,我可以接受這個答案嗎? –