我是C編程新手,目前我正在學習while
循環。我的問題是,while
循環必須繼續,直到用戶希望終止while
循環。但是,當我運行我的代碼似乎scanf()
只有一次掃描輸入和while
循環後終止,我不知道爲什麼。C編程:while循環中的scanf只讀取一次輸入,然後終止
int main(void) {
setbuf(stdout, NULL);
char answer = 'y';
while (answer == 'y') {
printf("continue? (y/n): ");
scanf("%c", &answer);
}
return 0;
}
爲什麼使用setbuf以(標準輸出,NULL)' – Brandin 2014-10-01 17:59:19
林的Windows用戶的意圖。當在Windows中同時使用printf和scanf時,c中的緩衝區有問題。爲了讓printf立即輸出,你需要在每次printf後每次寫入fflush(stdout)。如果你在開始時寫setbuf(stdout,NULL),你不需要在每個printf之後寫fflush(stdout)。 – Kim 2014-10-01 18:18:09
是的,它可能在某些環境中是一個問題,但是你擁有它的方式可能實際上並不能解決所有問題,你不應該試試'setvbuf(stdout,NULL,_IONBF,0);' - 模式標誌是什麼改變了流的行爲方式,例如評論這裏http://www.eclipse.org/forums/index.php/t/168233/ – Brandin 2014-10-01 18:25:32