2011-11-29 49 views
1

我有一個VS 10控制檯應用程序,它具有基於其values.I採取兩個char投入,並提出一些處理寫了下面的代碼:幾個如果getchar調用

char c1,c2; 
printf("Ener c1:"); 
c1 = getChar(); 
//Some desicion is made based on c1 
printf("Ener c2:"); 
c2 = getChar(); 
//Some desicion is made based on c2 

與運行它

Ener c1:y 
Ener c2:S 

這個執行後的c1'y'c2'\n' 怎樣纔可以解決?

回答

2

當你從cin得到一個字符時,用戶在技術上按下字符:'y'然後輸入,或者'\ n'。

\ n在緩衝區中,因此您應該在第一個getchar後清空緩衝區以刪除\ n。嘗試使用cin.ignore();

PS:我會讀這個代替,重新思考自己在做什麼:

How do I flush the cin buffer?

1

當你輸入「Y」並按下回車,你的應用程序接收到2個字符,它收到'y'和'\ n'(回車鍵。一個簡單的解決方案是循環直到你有另一個字符而不是\ n或EOF:

while ((c2 = getchar()) != '\n' && c != EOF);