第十一章 字串和字串函式

2021-08-30 17:22:42 字數 2094 閱讀 5641

字串字面值

用雙引號括起來的內容稱為字串字面量,雙引號中的字元和編譯器自動加入末尾的\0字元,都作為字串儲存在記憶體中,如果字串字面量之間沒有間隔,或者用空白字元分隔,c會將其視為串聯起來的字串字面量。字元陣列名和陣列名一樣,指向該陣列的首元素的位址。字串內部想要使用雙引號,在引號前加\

字串陣列初始化

const char ml[10]=

const char ml[10]=「lizk」;

沒有最後的空字元,這就不是乙個字串,而是乙個字元陣列

陣列形式和指標形式

初始化陣列把靜態儲存區的字串拷貝給陣列,而初始化指標只把字串的位址拷貝給指標

只有指標可以進行遞增操作

因為編譯器可能將相同的字串儲存在同乙個位址上,所以如果打算修改字串,就不要用指標指向字串字面量

%s mesg 以字串輸出值

%p &mesg 列印指標的位址

%p mesg輸出指標的值,即儲存的位址

字串輸出

gets()//讀取整行輸入,直到遇到換行符,然後丟棄換行符,儲存其餘字元,並在這些字元末尾新增乙個空字元使其成為乙個c字串

puts//顯示字串,並在末尾新增換行符,遇到空字元停止輸出

gets(word) puts(word)

這個東西,由於編譯器無法檢查陣列能否裝下字串,可能會導致緩衝區溢位 的問題

fgets()//讀到乙個換行符,會把它儲存在字串中

fgets()讀到檔案的結尾,將返回乙個空指標,否則,返回的位址與傳入的第乙個引數相同

第乙個引數,同gets()

第二個引數,指明了讀入字元的最大數量

第三個引數,指明要讀入的檔案,鍵盤讀入,則為stdin

fputs()//顯示字串,不在後面加換行符

讀取過長輸入沒有問題

空字元和空指標

空字元是用來標記字串末尾的字元,其對應字元編碼是0,為整數型別,佔乙個位元組。

空指標的值不會與任何資料的有效位址對應,為指標型別,佔4位元組

gets_s()

只從標準輸入中讀取資料,不需要第三個引數

讀到換行符會丟棄

讀到最大字元都沒有讀取到換行符,會把目標陣列中的首字元設定為空字元,讀取並丟棄隨後的輸入直至讀到換行符或檔案末尾,然後返回空指標。接著呼叫處理函式

s_gets()//自定義函式

//如果字串中出現換行符就用空字元替換,如果字串中出現空

//字元,就丟棄該輸入行的其餘字元,然後返回與fgets()相同的值

char *s_gets(char *st,int n)

return ret_val;

}

字串函式

在 string.h 標頭檔案中

這是乙個超連結

sprintf()函式

第乙個引數是目標字串的位址,其餘引數和printf()相同

sprintf(formal,"%s,%-19s:$%6.2f\n",last,first,prize);

只不過把組合後的字串儲存在陣列formal中而不是顯示在螢幕上

main()函式

main(void)沒有引數

main(int argc,char *argv)或者只有兩個引數

第乙個引數是命令列中的字串數量

argv[0] 程式本身的名稱

argv[1]隨後的第乙個字串

如 輸入 repeat resisitance is futile

argv[1]指向repeat argv[2]指向is 等

將字串轉換為數字

atoi()//int

atol()//long

atof()//double

strtol()//long

strtoul()//unsigned long

strtod()//double

某個栗子

long strtol(const char *restrict nptr,char **restrict endptr,int base);

nptr是指向待轉換字串的指標,endptr是乙個指標的位址,該指標被設定為標識輸入數字結束字元的位址,base表示以什麼進製寫入數字

第十一章 字串和字串函式

第十一章 1 有 0才能叫字串 2 char m3 char m3 後者m3是陣列形式,是乙個位址常量,不能 m3 前者m3是乙個指標變數,可以 m3 3 字串輸入 停止特點 例子特殊用法 gets 遇到換行符 不檢查預留空間,宜溢位 gets name while gets name null 檢...

第十一章 字串和字串函式

github位址,歡迎 star 字串是以空字元 0 結尾的 char 型別陣列。1 字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量 string literal 也叫作字串常量 string constant 雙引號中的字元和編譯器自動加入末尾的 0 字元,都作為字串儲存在記憶體中。字串...

字串和字串函式

字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...