C語言,需要getchar()接收回車的情況


1、先scanf后getchar()

int main(){ char ch, arr[10]; scanf("%s", arr); ch = getchar();
printf("output: arr = %s", arr); printf(
"output: ch = %c", ch); return 0
; }
運行結果如下:

這時候需要在ch=getchar()前面加getchar()接收回車
但是當使用gets()來接收arr的話就不需要接收回車

2、兩個getchar()

int main(){ char ch1, ch2; ch1 = getchar(); ch2 = getchar(); printf("outout: ch1 = %c\n", ch1); printf("output: ch2 = %c", ch2); return 0; }
運行結果如下:

 

這時候需要在ch1和ch2之間加一個getchar()

 

為什么需要用getchar()吸收回車?

在這里需要說一下%d和%c(也就是getchar())的區別:使用%d時,會將空格、回車、tab當作分隔符,不會當作數據讀取使用;使用%c時會將所有的輸入內容全部作為數據輸入

所以當我們輸入一個字符時,如果前面曾經有輸入的話就會將前面輸入的回車或者空格作為輸入數據

 

那么除了使用以上兩種方法吸收回車外,還有其他方法嗎?

1)可以使用fflush(stdin);來清空輸入流中的內容,這樣輸入字符時緩沖區就沒有數據可以作為輸入了

2)可以使用while(getchar() != '\n');來接收垃圾字符,因為無論如何輸入,最終都是要敲回車的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM