您好,登錄后才能下訂單哦!
本篇內容主要講解“c語言gets()和scanf()的區別有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c語言gets()和scanf()的區別有哪些”吧!
主要是針對“%c”:默認沒有任何分隔字符(包括all空白字符)。
情況一
char a,b;
scanf("%c%c",&a,&b);
printf("%c%c",a,b);
則字符輸入沒有任何分隔符。
情況二
char a,b;
scanf("%c %c",&a,&b);
printf("%c%c",a,b);
比較特殊:只要scanf()中字符%c之間出現了任意空白字符,那么在輸入端任意空白字符(且不限數量)都作為分隔符{此時的情況就類似“%d%d”了,能夠智能識別讀取“真”字符}——但是!新的一輪的第一個字符仍會是回車符。
綜上,以后輸入讀取多個字符使用情況二更好。
理緩沖區多余無用字符的方法
(1) 清空緩沖區——有一個名為fflush(stdin)的函數,可以用來清空緩沖區。
while(scanf("%c%c",&a,&b)!=EOF)
{
printf("a=%c,b=%c\n",a,b);
fflush(stdin);
printf("Input the value of a and b:");
}
即:在空白字符被誤讀之前將緩沖區暫時清空。
(2)將緩沖區的致錯數據讀出來(間接清理緩沖區)——getchar() or gets()
對于getchar():讀取緩沖區的第一個字符(EOF),該函數的返回值為該字符(EOF==-1)(若返回給整型變量則是它對應的ASCII碼)擴展兄弟函數putchar():putchar(ch/int)——此函數輸出在終端以參數ch/int(ASCII碼)對應的char值。
對于gets():獲取字符串(讀取一行東西)。
在C語言中,scanf()函數和gets()函數都可用于輸入字符串,但是也有很多區別。
scanf()和gets()主要區別如下:
1.gets()的輸入分隔符只有回車,因此gets能夠讀入空格。如果使用gets()輸入"Hello World",運行之后的結果是"Hello World",但是使用scanf()輸入只能輸出"Hello"。
2.scanf()和gets()對待緩沖區的回車符也是完全不同的。scanf()在讀取非空白符之前會忽略回車,讀取之后如果遇到空白字符會停止輸入,將其留在緩沖區里。gets()只要一遇到回車就輸入結束,并把這個回車從緩沖區里移走。
3.gets()可以讀取空回車,但是scanf不能。
到此,相信大家對“c語言gets()和scanf()的區別有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。