首先getchar()函式是輸入乙個字元,通常採用此函式將scanf()未處理的量進行釋放;
char a,b;
比如 scanf(「%c」,&a);
scanf("%c",&b);
printf("a:%c,b:%c\n",a,b);
此時你想讓a=1,b=2;
你會這樣輸入1enter鍵加2加enter鍵 此時你會發現b的值為空,那是因為scanf()函式預設你最後的enter鍵不是消失而是放在緩衝區裡,這時你再用scanf()的話,之前的enter鍵會從緩衝區裡進入到你的第二個scanf(),所以你會出現這樣的錯誤
此時你在第乙個scanf()後加乙個getchar();就沒問題了;
如下:char a,b;
scanf(「%c」,&a);
getchar();
scanf(「%c」,&b);
printf(「a:%c,b:%c」,a,b);
getchar 與scanf 的理解
1.getchar 是將輸入的字元都存到緩衝區中,直到輸入回車 將回車也存到緩衝區中 才讀取緩衝區中的字元,而且若輸入了多個字元到緩衝區中,後面的字元不用按回車便會依次讀取到後序的getchar 中。2.scanf 的程式片段如下 char a,b,c,d scanf c a scanf c b s...
scanf 與getchar 區別的總結
第一 要注意不同的函式是否接受空格符 是否捨棄最後的回車符的問題 讀取字元時 scanf 以space enter tab結束一次輸入,不會捨棄最後的回車符 即回車符會殘留在緩衝區中 getchar 以enter結束輸入,也不會捨棄最後的回車符 讀取字串時 scanf 以space enter ta...
關於學習getchar 和scanf 時問題
一 getchar 函式 getchar 函式的原型為 int getchar void 該函式不帶形參,返回值為int型,成功時,返回值為字元的ascii碼,出錯是為 1.getchar 函式只對字元起作用,在stdio.h中定義,其實是個巨集定義函式,是getc stdin 的巨集定義。如果使用...