C語言 字串

2021-10-22 04:15:54 字數 2660 閱讀 7802

字串常量是由一對雙引號括起來的乙個字串行。如「hello」,「12354」「

無論雙引號內是否包含字元,包含多少個字元,都代表乙個字串常量

為便於確定字串的長度,c編譯器會自動在字串的末尾新增乙個ascll碼值為0的空操作符『\0』作為字串結束的標誌,在字串中可以不顯示地寫出

字串:實際就是由若干有效字元構成且以字元『\0』作為結束的乙個字串行

字串賦值時可以直接宣告陣列長度,也可以不宣告陣列長度

char str[6] = ;

char str2[6] = ;

char str3 =

以上的三種賦值法都是合法的

字串的長度和字串陣列的長度不同

陣列長度 = 字元數 + 1

通常,我們將乙個字串放在一維字元陣列中;將多個字串放在多維字元陣列中

字元第一維的長度代表字串的個數,可以省略;但是第二維的長度不能省略,應該按最長的字串的長度設定第二維的長度

char weekday[7][10] = ;

char weekday[10] = ;

上述的兩種初始化的方法是正確的

若字串太長,無法寫在一行中,則可將其拆分成幾個小的片段寫在不同的行中

char longstring = "this is the first half of the string"

"and this is the second half.";

字元指標:是指向字元型資料的指標變數。

字元指標中儲存的位址值是字元陣列的首位址

直接定義 char *ptr =「hello」

間接定義 char *ptr; ptr = 「hello」

和其他型別的陣列一樣,可以通過使用下標的方式訪問儲存在字元中的每個字元

str [0] 就是字元陣列的第乙個字元

此外可以通過字元指標間接訪問存放於陣列中的字串

若字元指標ptr指向了陣列str的首位址,既可以通過*(ptr+i)來引用字串中的第i+1個陣列;

*(ptr+i)相當於 *(str+i)即str[i]

注意,對於陣列名str,不能使用str++操作使其指向字串中的某個字元,因為陣列名是乙個位址常量,其值是不能被改變的

有三種方式可以對字串進行輸入或輸出

第一種按照c格式符

for(i = 0; i < 10; i++)

for(i = 0; i < 10; i++)

第二種按照s格式符
scanf("%s",str);

printf("%s",str);

注意當使用s格式符時,無論是輸入還是輸出,都不用&取位址符

因為此時str不僅僅是字元名,也是代表字元的首位址

第三種gets()puts()

使用字串處理函式gets(),可以輸入代空格的字串

gets()以回車符作為字串的終止符,同時將回車符從緩衝區讀走,但不作為字串的一部分

scanf()不讀走回車符,回車符仍在輸入緩衝區

puts()用於從括號內的引數給出的位址開始,依次輸出儲存單元中的字元,當遇到第乙個』\0『時輸出結束,並自動輸出乙個換行符

printf()可以在輸出行中新增一些其他的字元資訊

由於gets()函式不能限制輸入字串的長度,需要用fgets()函式來約束它

fgets(name,sizeof(name),stdin)
函式功能

函式呼叫的一般形式

功能描述及其說明

求字串長度

strlen(str)

由函式值返回字串str實際長度,即不包括』\0』在內的實際字元的個數

字串複製

strcpy(str1,str2)

將字串str2複製到字元陣列str1中,這裡應確保字元陣列str1的大小足以存放下字串2

字串比較

strcmp(str1,str2)

比較字串str1和str2的大小,結果分一下三種第一種當str1大於str2時,函式返回值大於0;當str1等於str2時,函式返回值等於0;當str1小於str2時,函式返回值小於0

字串鏈結

strcat(str1,str2)

將str2新增到str1的末尾

「n族」字串複製

strncpy(str1,str2,n)

將字串str2的至多前n個字元複製到字元陣列str1中

「n族」字串比較

strncmp(str1,str2,n)

比較前n個字元

「n族」字串鏈結

strncat(str1,str2,n)

將str2最多前n個字元新增到str1的末尾

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...

C語言 字串

char str lnj 字串變數 l n j 0 printf str size lu n sizeof str 字元陣列 這個並不是字串,而是字元陣列 char charvalues 如何輸出字串變數,s str 陣列的名稱,陣列的名稱就是陣列的位址 s的原理,從傳入的 位址 開始逐個取出,直到...

c語言字串

字串 字串1 概念 1.1 定義 1.1.1 用雙引號引起來的多個字元 1.2 兩個連續的雙引號中間是空格或回車,則兩個字串自動連在一起 1.3 遇見 0字串結束,0可以提前終止字串 1.4 初始化 1.4.1 char str 6 1.4.2 char str hello 編譯時自動給 加6 1....