#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.