程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-一個字符輸入問題,想的跟結果不一樣

c語言-一個字符輸入問題,想的跟結果不一樣

編輯:編程綜合問答
一個字符輸入問題,想的跟結果不一樣

#include
int main()
{
int a,b;
char ch;
while((ch=getchar())!='\n')
{
putchar(ch);
putchar('\n');
while(getchar()=='a')
printf("dasda\n");
printf("huhuhuhuh\n");
}
return 0;
}

我輸入ca然後回車
結果是
ca
c
dasda
huhuhuhuh

第一次循環結束.緩存區裡面還有一個換行符*\n*
第2次循環開始時,再判斷while應該程序結束.可是程序沒有結束,還能輸入!!!

還有一種想法就是,每個循環裡面要兩個字符(用了兩次getchar),第一次緩存區剩余的\n,我再輸入一個字符,回車.程序還是沒有結束....為什麼
不知道哪裡想錯了,請大神指導

最佳回答:


額,首先,getchar 函數,是不會等待用戶區按下回車的,他會直接的從緩沖區裡面讀取一個字符,如果用戶的一次輸入超過一個字符,寫一個調用getchar 的地方就會自動去到緩沖區裡面讀取先一個字符。這是前提。我們來看你的問題;你輸入了ca然會急了一個回車,相當於是緩沖區裡面現在又三個 c + a + 回車。執行程序,第一個while 接收c != ‘\n’,然會輸出c ,換行,接著第二個while(第一次) ,a == a,接著輸出dasda,然後第二個while(第二次)'\n' != a,所以跳出了循環,打印出了huhuhu ,現在緩沖區已經沒有任何的字符了,所以會卡在那。OK.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved