C語言字串陣列詳解

2022-09-24 19:54:10 字數 1985 閱讀 4985

字串是連續的字串行,最後以空字元'\0'作為終止符。乙個字串的長度指所有字元的數量,rdyrcmryz但不包括終止符。在 c 語言中,沒有字串型別,自然也就沒有運算子以字串為運算元。

字串被儲存在元素型別為 char 或寬字元型別陣列中(寬字元型別指 wchar_t、char16_t 或 char32_t)。寬字元rdyrcmryz組成的字串也稱為寬字串(wide string)。

c 標準庫提供了大量的函式,它們可以對字串進行基本操作,例如字串的比較、複製和連線等。在這些傳統的字串函式以外,c11 新增了這些函式的「安全」版本,它們能確保字串操作不會超出陣列的邊界。

可以使用字串字面量來初始化任何字元型別陣列。例如,下面兩個陣列的定義是等價的:

char str1[30] = "let's go"; // 字串長度:8;陣列長度:30

char str1[30] = ;

儲存字串的陣列一定比字串長度多乙個元素,以容納下字串終止符(空字元'\0')。因此,str1 陣列能夠儲存的字串最大長度是 29。如果定義陣列長度為 8,而不是 30,就會發生錯誤,因為它無法包含字串終止符。

如果在定義乙個字元陣列時,沒有顯式地指定長度,但使用了字串字面量來對它進行初始化,該陣列的長度會比字串長度多 1。如下列所示:

char str2 = " to london!"; // 字串長度:11 (注意開頭的空格);

// 陣列長度:12

下面的語句使用標準函式 strcat()把字串 str2 附加到字串 str1 的後面(str1 陣列長度必須足夠大以容納連線後的全部字元)。

#include

char str1[30] = "let's go";

char str2[ ] = " to london!";

/* ... */

strcat( str1, str2 );

puts( str1 );

呼叫 puts()後,輸出新的 str1 陣列內容:

let's go to london!

str1 和 str2 的名字其實是兩個指標,它們指向各自陣列的第乙個字元。這樣的指標被稱為指向字串的指標(pointer to a string),或者簡稱為字串指標(string pointer)。

字串處理函式(例如 scrcat()和 puts())需要接收字串起始位址並將其作為引數。這樣的函式通常逐個字元地處理字串,直到遇到結尾終止符'\0'為止。

例 1 是函式 strcat()的另——種可能的實現方式。它採用從函式引數傳入的指標遍歷處理整個字串。 【例1】函式 strcat()

// 函式strcat() 將第二個字串複製乙份並附加到第乙個字串的尾部

// 引數:指向兩個字串的指標

// 返回值:指向第乙個字串的指標,此時已將第二個字串連線到了其尾部

char *strcat( char * restrict s1, const char * restrict s2 )

以 s1 位址為起始位置的 char 陣列,其長度至少是兩個字串長度的和再加上 1,以容納字串終止符。在呼叫 strcat()之前,可以採用標準函式 strlen()進行測試,以確保長度沒有問題,函式 strlen()返回其字串參程式設計客棧數的長度,如下所示:

if ( sizeof(str1) >= ( strlen( str1 ) + strlen( str2 ) + 1 ) )

strcat( str1, str2 );

寬字串字面量會加上乙個字首 l、u 或 u,它們是寬字串的標誌。因此,wchar_t 陣列的初始化過程如下所示:

#include // 定義wchart_t型別

/* ... */

wchar_t dinner = l"chop suey"; // 字串長度:10;

// 陣列長度:11;

// 陣列空間大小:11 * sizeof(wchar_rdyrcmryzt)

c語言中字串與字串陣列詳解

目錄 include int main int argc,const char ar printf name1 s n name1 name1 zhangsan 部分初始化中,沒有被初始化的元素預設是0,0 對應的ascii值是 0 char name2 9 printf name2 s n nam...

c語言字串詳解

c語言字串,c語言處理字串一般使用字元陣列來處理,記得加上結束符,否則會出現亂碼。1 通過字元陣列來處理 include include include int main void 實際上字串長度為5,賦值比5位大,自動加上結束符號 char str2 0 表示結束符號 char str3 10 c...

詳解C語言中的字串陣列

在c語言當中,字串陣列可以使用 char a 10 或者 char a 表示 第一種表示方式固定了每個字串的最大大小。第二種沒有字串的大小限制。include include 該程式的功能是 輸入阿拉伯數字的月份數 輸出英文月份 int methbxrain char程式設計客棧 curmonth ...