一.表示字串和字串i/o
字串是以空字元(\0)結尾的char型別陣列。注意:如果char型別陣列沒有以\0結尾則不是乙個字串。
1.字串字面量(字串常量)
用雙引號括起來的內容稱為字串字面量,也叫字串常量。
字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次。
2.字串陣列和初始化
const char * pt1 = "something is pointing at me.";
相當於const char ar1 = "something is pointing at me.";
3.陣列和指標
陣列形式(ar1)在計算機的記憶體中分配乙個內含29個元素的陣列。此時字串有兩個副本,乙個是靜態記憶體中的字串常量,另乙個是儲存在ar1陣列中的字串。
指標形式(*pt1)也使得編譯器為字串在靜態儲存區域預留29個元素的空間。該變數指向該字串中的首字元。
4.陣列和指標的區別
char heart = "i love tillie!";
const char * head = "i love tillie!";
①.陣列是常量,指標是變數
②.指標表示法可以進行遞增操作,陣列表示法不可以
③.沒有被const修飾的指標表示法可以修改字串字面量,陣列不可以修改原始字串字面量。
二.字串函式
常用函式strlen()、strcat()、strncmp()、strcpy()和strncpy()。
1.strlen()函式
strlen()函式用於統計字串的長度。用法:strlen(text)
2.strcat()函式
該函式把第二個字串的備份附加在第乙個字串的末尾,並把拼接後形成的新的字串作為第乙個字串,第二個字串不變。
3.strncat()函式
strcat函式無法檢查第乙個陣列是否能容納第二個字串,如果分配給第乙個陣列的空間不夠大,多出來的字元溢位到相鄰儲存單元時就會出現問題。
用strncat()函式的第三個函式指定了最大新增字元數。例如:strncat(bugs,addon,13)將把addon字串的內容附加給bugs,加到第13個字元或者遇到空字元停止。
4.strcmp()函式
用於比較字串內容是否相等
5.strncmp()函式
第三個引數可以指定比較到哪個位置
6.strcpy()和strncpy()函式
strcpy()函式相當於字串賦值運算子。第乙個引數是char *型別,可以從陣列的任意位置開始,第二個引數是char *型別,用於被拷貝的字串。
strncpy()函式更加安全,該函式的第3個引數指明了可拷貝的最大字元數。
7.sprintf()函式
將資料寫入字串中。
C語言 字串和字串函式
輸入 gets 函式 1.gets 從標準輸入裝置讀取字串,以回車結束讀取,使用 0 結尾,回車符 n 被捨棄沒有遺留在緩衝區。2.可以用來輸入帶空格的字串。3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。fgets 和 fputs 函式 1.fgets函式的第2個引數指明了...
字串和字串函式
字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...
字串和字串函式
1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...