我必須爲類使用並行數組來存儲學生成績的數據。我們要在執行程序時使用Linux命令「<」來給出陣列數據。c - 從文件中讀取數據到數組
./a.out < inputfile
但是,當我運行該程序時,我得到了程序用於訪問數組中數據的菜單的無限循環。它看起來像程序正在跳過我用來從函數填充數組並使用文件中的數據作爲單獨函數中的菜單scanf()的函數。
下面是我使用填充陣列功能:
void populate(int idarray[],int testone[], int testtwo[],float hw[],int max)
{
int counter = 0;
while(scanf("%d", &idarray[counter]) != EOF)
{
if(idarray[counter] != -1)
{
//scanf("%f %d %d", &hw[counter], &testone[counter], &testtwo[counter]);
scanf("%f",&hw[counter]);
scanf("%d",&testone[counter]);
scanf("%d",&testtwo[counter]);
counter++;
}
if(counter == max-1)
break;
}
}
「MAX」是數組的邊界。
輸入文件看起來像:
1983990 75.6 39 78 1935440 78 50.03 34
只是想知道你的while循環是因爲counter == max - 1還是EOF而中斷。如果是前者,那麼你仍然會在stdin中輸入輸入,這將作爲輸入給你的菜單選項,而不受你的控制 – Titus 2014-10-31 19:17:53
你可以給出一個(小的)輸入例子嗎?你是否已經在調試器中一行一行地檢查代碼,並檢查每個'scanf'調用返回的內容? – 2014-10-31 19:18:26
我增加了計數器== max -1作爲一個調試,因爲我最初得到分段錯誤:11在運行時錯誤。 – 2014-10-31 19:23:41