如果想把乙個字串讀到程式中,必須首先預留儲存字串的空間,然後使用輸入函式來獲取這個字串。
最常用的是gets().讀字串直到遇到乙個換行字元('\n') ,按回車鍵可以產生這個字元.它讀取換行符之前(不包括換行符)的所有字元,在這些字元後新增乙個空字元('\0') ,然後把這個字串交給呼叫它的程式.
gets()的乙個不足就是它不檢查預留儲存區是否能夠容納實際輸入的資料.多出來的字元簡單地溢位到相鄰的記憶體區.fgets()函式改進了這個問題,它讓您指定最大讀入字元數.由於gets()不檢查目標陣列是否能夠容納輸入,所以很不安全.
因此對於重要的程式設計,應該使用fgets()而不是gets()
● 它需要第二個引數來說明最大讀入字元數.如果這個引數值為n, fgets()就會讀取最多n-1個字元或者讀完乙個換行符為止,由這二者中最先滿足的那個來結束輸入.
● 如果fgets()讀取到換行符,就會把它存到字串裡,而不是像gets()那樣丟棄它.
● 它還需要第三個引數來說明讀哪乙個檔案.從鍵盤上讀資料時,可以使用stdin(代表standard input)作為該引數.
scanf()使用兩種方法決定輸入結束.但無論哪種方法,字串都是以遇到的第乙個非空白字元開始.如果使用%s格式,字串讀到(但不包括)下乙個空白字元(比如空格、製表符或換行符)。如果指定了字段寬度,比如%10s, scanf()就會讀入10個字元或直到遇到第乙個空白字元,由二者中最先滿足的那乙個終止輸入.
主要的差別在於它們如何決定字串何時結束.scanf()是基於獲取單詞而不是獲取字串 ;而gets()函式會讀取所有的字元,直到遇到第乙個換行符為止.
黑馬程式設計師 C語言 字串
一.字串的基本概念 簡單的字串 itcast 乙個 i 是乙個字元 很多個字元組合在一起就是字串了 char a 123 和 char a 的區別,可以比較大小 123 其實是由 1 2 3 0 組成 123 的儲存分布 字串的輸出 s 0 是不會輸出的 陣列是用來儲存相同型別的基本資料,陣列是有序...
黑馬程式設計師 C語言 陣列 字串
asp.net android ios開發 net培訓 期待與您交流!陣列 陣列用來存放一組型別相同的資料 定義陣列 int num 10 int是陣列內元素的型別 num是陣列名 10是陣列內元素的個數 初始化陣列 int a 3 int a 3 int a int a 3 如果定義陣列的同時進行...
黑馬程式設計師 C 字串處理
windows phone 7手機開發 net培訓 期待與您交流!字串常用函式 substring contains indexof startswith endswith split 應用舉例 string s 定義乙個字串 string 網域名稱 s.substring 7 從指定序號開始到最後...