首頁  >  文章  >  後端開發  >  c語言的輸入函數有哪些

c語言的輸入函數有哪些

coldplay.xixi
coldplay.xixi原創
2020-09-01 09:27:3743613瀏覽

c語言的輸入函數有:1、scanf()函數、從標準輸入stdin讀取格式化輸入;2、getchar()函數,從標準輸入stdin取得一個字元;3、gets()函數,從標準輸入stdin讀取一行;4、getch()函數,從stdin流中讀取字串,直至接受到換行符或EOF時停止。

c語言的輸入函數有哪些

本教學操作環境:windows7系統、c99版本、Dell G3電腦。

c語言的輸入函數有:

1、scanf的傳回值

##scanf()函數傳回成功賦值的資料項數,讀到文件末端出錯時則回傳EOF。

如:

scanf("%d%d", &a, &b);

如果a和b都成功讀入,那麼scanf的回傳值就是2

如果只有a被成功讀入,回傳值為1

如果a和b都沒有成功讀入,回傳值為0

如果遇到錯誤或遇到end of file,回傳值為EOF

且回傳值為int型

空白符號:空白字元會使scanf()函數在讀取操作中略去輸入中的一個或多個空白字元。

非空白符:一個非空白字元會使scanf()函數在讀入時剔除掉與這個非空白字元相同的字元。

使用scanf函數時應該注意的事項

(1) 對於字串陣列或字串指標變量,由於陣列名稱和指標變數名稱本身就是位址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。

(2) 可以在格式化字串中的"%"各格式化規定符之間加入整數,表示任何讀取操作中的最大位數。

(3) scanf()函數中沒有精確度控制。

如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

(4) scanf中要求給予變數位址,如給予變數名稱則會出錯

如scanf("%d",a);是非法的,應改為scnaf ("%d",&a);才是合法的。

(5) 輸入多個數值資料時,若格式控製字串中沒有非格式字元作輸入資料之間的間隔則可用空格,TAB或回車作間隔。

C編譯在碰到空格,TAB,回車或非法資料(如對「%d」輸入「12A」時,A即為非法資料)時即認為該資料結束。

(6) 在輸入字符資料(%c)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。

(7) 若格式控製字串中有非格式字元則輸入時也要輸入該非格式字元。

2、getchar

getchar有一個int型的回傳值.當程式呼叫getchar時.程式就等著使用者按鍵.使用者輸入的字元被存放在鍵盤緩衝區中.直到使用者按回車為止(回車字元也放在緩衝區中).當使用者鍵入回車之後,getchar才開始從stdin流中每次讀入一個字元.getchar函數的回傳值是使用者輸入的第一個字元的ASCII碼,如出錯返回-1,且將使用者輸入的字元回顯到螢幕.如使用者在按回車之前輸入了不只一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完為後,才等待用戶按鍵.

3、getch

getch與getchar基本功能相同,差別是getch直接從鍵盤取得鍵值,不等待使用者按回車,只要使用者按一個鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯返回-1.輸入的字符不會回顯在屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程式運行,當按任意鍵後程式繼續運行

4、gets

功能:從stdin流中讀取字串,直到接受到換行符或EOF時停止,並將讀取的結果存放在buffer指標所指向的字元陣列中。換行符不作為讀取串的內容,讀取的換行符被轉換為null值,並由此來結束字串。

傳回值:讀入成功,傳回與參數buffer相同的指標;讀入過程中遇到EOF(End-of-File)或發生錯誤,傳回NULL指標。所以在遇到回傳值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

想了解更多程式設計學習,請關注

php培訓欄位!

#

以上是c語言的輸入函數有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn