字串輸入函式

2021-07-05 18:46:49 字數 830 閱讀 4402

scanf(),gets(),fgets(),

gets()的不足時它不檢查預留儲存區是否能容納實際輸入的資料,多出來的字元簡單地溢位到相鄰的記憶體區。

fgets()對此進行了改進,它讓您輸入最大讀入的字元數,fgets是為i/o檔案設計的,fgets()和gets()有三方面的不同:

1.它需要第二個引數來說明最大讀入字元數。如果這個引數值為n,fgets()就會讀取最多n-1個字元或者讀完乙個換行符為止,有這兩者最先滿足的那個來結束輸入

2.如果fgets()讀取到換行符,就會把它存到字串裡,而不是像gets()那樣丟棄它。

3.它還需要第三個引數來說明讀哪乙個檔案。從鍵盤上讀資料時,可以使用stdin()作為該引數,這個識別符號在stdio.h中定義

在編寫重要程式的時候,應該使用fgets()而不是gets();

scanf()和gets()的區別:

決定字串何時結束的條件不同。scanf()是基於獲取單詞的而不是獲取字串,而gets()函式會讀取所有的字元,直到遇到換行符為止;scanf()使用兩種方法決定輸入結束,無論哪種方法字串都是以遇到的第乙個非空的字串開始,如果使用%s格式,字串讀到下乙個空白字串(空格,製表符,換行符),如果指定了字段的寬度,比如%10s,scanf()就會讀入10個字元直到遇到第乙個空白字元,優良這種最先滿足的哪乙個中止。

scanf()返回乙個整數值,這個值是成功讀取的專案數;或者當遇到檔案結束時返回乙個eof。

根據所需輸入的特點,用gets()從鍵盤讀取文字可能要更好,因為他跟容易被使用,更快,而且更簡潔。scanf()主要用於以某種標準的形式輸入的混合型別資料的讀取和轉換,如果希望以此只輸入乙個單詞,最好使用scanf()。

字串 scanf函式輸入字串詳解

除了在定義字元陣列時初始化外,還可以通過scanf從鍵盤輸入字串。下面寫乙個程式 用 scanf 給字元陣列賦值不同於對數值型陣列賦值。前面講過,給數值型陣列賦值時只能用 for 迴圈乙個乙個地賦值,不能整體賦值。而給字元陣列賦值時可以直接賦值,不需要使用迴圈。此外從鍵盤輸入後,系統會自動在最後新增...

字串輸入

之前在學習input的時候,通過它能夠完成從鍵盤獲取資料,然後儲存到指定的變數中 注意 input獲取的資料,都以字串的方式進行儲存,即使輸入的是數字,那麼也是以字串方式儲存 demo username input 請輸入使用者名稱 print 使用者名為 s username password i...

字串輸入輸出函式

while gets name null 可檢查檔案是否結尾 while ch getchar eof gets 讀取換行符並將其丟棄,fgets 把換行符存字串裡,但每次顯示字串會顯示換行符 不足之處 fgets 是為檔案i o而設計得,在處理鍵盤輸入時就不如gets 那麼方便。它需要第二個引數來...