,所以我有這樣的代碼,這是應該從用戶那裏獲取座標內:scanf的while循環工作只有一次
#include <stdio.h>
#include <time.h>
int main() {
int number;
char letter;
int points = 3;
while(points < 8){
printf("give me first coordinate (letter)");
scanf("%c",&letter);
printf("give me second coordinate (number)");
scanf("%d",&number);
}
}
據我所知,這應該不斷從用戶取座標,而是它只需要一次,然後以一種非常奇怪的方式粉碎,就像沒有任何理由地跳過scanf一樣。這裏是我的輸出:
give me first coordinate (letter)a
give me second coordinate (number)1
give me first coordinate (letter)give me second coordinate (number)12
give me first coordinate (letter)give me second coordinate (number)df
give me first coordinate (letter)give me second coordinate (number)give me first coordinate (letter)give me second coordinate (number)sss
我覺得真的很困惑,因爲這是簡單的代碼,我沒有slightes想法什麼導致此。任何人?(如果它有什麼區別,我的系統是山獅)
想想你如何處理出現在輸入新行
這也適用。提示:你現在沒有處理它們。 – 2013-05-08 18:36:18
您忽略了輸入操作的結果。這是一個致命的編程錯誤。 – 2013-05-08 18:39:28
@KubaPolaczek錯誤是由所有......但你將如何避免在未來犯這個錯誤?在我看來,這個問題主要是關於'scanf'。我首先仔細閱讀'scanf'手冊,一遍又一遍,直到我理解了所有這一切......爲了將來的參考,opengroup給出了C標準庫函數的一個很好的描述。您可以通過搜索「opengroup scanf」找到opengroup scanf手冊。 – Sebivor 2013-05-08 19:01:04