11 c語言字串和字串函式

2021-10-10 08:17:42 字數 1401 閱讀 2002

一.表示字串和字串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 類似於乙個陣列名...