溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言gets()和scanf()的區(qū)別有哪些

發(fā)布時間:2021-11-04 14:49:26 來源:億速云 閱讀:141 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“c語言gets()和scanf()的區(qū)別有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c語言gets()和scanf()的區(qū)別有哪些”吧!

  主要是針對“%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之間出現(xiàn)了任意空白字符,那么在輸入端任意空白字符(且不限數(shù)量)都作為分隔符{此時的情況就類似“%d%d”了,能夠智能識別讀取“真”字符}——但是!新的一輪的第一個字符仍會是回車符。

  綜上,以后輸入讀取多個字符使用情況二更好。

  理緩沖區(qū)多余無用字符的方法

  (1) 清空緩沖區(qū)——有一個名為fflush(stdin)的函數(shù),可以用來清空緩沖區(qū)。

  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:");

  }

  即:在空白字符被誤讀之前將緩沖區(qū)暫時清空。

  (2)將緩沖區(qū)的致錯數(shù)據(jù)讀出來(間接清理緩沖區(qū))——getchar() or gets()

  對于getchar():讀取緩沖區(qū)的第一個字符(EOF),該函數(shù)的返回值為該字符(EOF==-1)(若返回給整型變量則是它對應的ASCII碼)擴展兄弟函數(shù)putchar():putchar(ch/int)——此函數(shù)輸出在終端以參數(shù)ch/int(ASCII碼)對應的char值。

  對于gets():獲取字符串(讀取一行東西)。

  在C語言中,scanf()函數(shù)和gets()函數(shù)都可用于輸入字符串,但是也有很多區(qū)別。

  scanf()和gets()主要區(qū)別如下:

  1.gets()的輸入分隔符只有回車,因此gets能夠讀入空格。如果使用gets()輸入"Hello World",運行之后的結(jié)果是"Hello World",但是使用scanf()輸入只能輸出"Hello"。

  2.scanf()和gets()對待緩沖區(qū)的回車符也是完全不同的。scanf()在讀取非空白符之前會忽略回車,讀取之后如果遇到空白字符會停止輸入,將其留在緩沖區(qū)里。gets()只要一遇到回車就輸入結(jié)束,并把這個回車從緩沖區(qū)里移走。

  3.gets()可以讀取空回車,但是scanf不能。

到此,相信大家對“c語言gets()和scanf()的區(qū)別有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI