我寫了下面的代碼:與fgets()不等待輸入
int N;
scanf("%d", &N);
int i;
for (i = 0; i < N; i++) {
char line[LINE_MAX];
if (fgets(line, LINE_MAX, stdin) != NULL) {
// do stuff with line here
printf("%c - %c\n", line[0], line[1]);
}
}
我有擁有它的行數的輸入文件,然後行的這個數字其次,我要處理。所以我讀到N
的行數。在那之後,我使用fgets
來讓這條線能夠處理它。
然而,fgets
似乎並沒有等待標準輸入的第一次。我總是得到-
的輸出,然後等待輸入。意思是,循環的第一次迭代,它不是在fgets
等待標準輸入和剛打印出由-
分開,我printf
做兩個空字符。
這是爲什麼?我怎樣才能讓fgets
每次都等待輸入?我覺得這是一個線程問題。
但這仍然留下了新行未讀,這意味着它的()'通過以下'與fgets讀的第一件事,這通常不是什麼打算。 – geekosaur 2012-04-14 20:46:58