C語言字元串
一、字元串基礎
注意:字元串一定以\0結尾。
Printf(“yang\n”);
其中yang為字元串常量,“yang”=‘y’+‘a’+‘n’+‘g’+‘\0’。字元串由很多的字元組成,通常使用字元數組來存儲字元串,如char name[10]=“yang”;也可以以printf(name);的形式輸出,即通過數組來通路字元串,但會有警告。因為預設情況下,printf函數隻接受字元串常量作為參數(對變量并未寫明)。
字元串的三種寫法:
- Char name[8]=“yang”;//數組占用了8個位元組的存儲空間,但是隻含有5個字元。
- Char name[8]={‘y’+‘a’+‘n’+‘g’+‘\o’};
- Char name[8]={‘y’+‘a’+‘n’+‘g’+‘0’};
這三種寫法在記憶體中的表現都是一樣的。
Char name[]={‘y’+‘a’};前面不寫個數,不是一個字元串,隻能說是一個普通的字元數組。
char name[]=“yang”;
Name[1]=‘o’;把字元串的第二個元素值由a改成o。
二、字元串使用注意點
(1)分析代碼,了解\0的作用。
Char name[]=“yang”;
Char name2[]={‘o’+‘k’};
Printf(“name2=%s”,name2);
%s:根據右邊的參數,列印字元串(遇到\0為止)
上面代碼的列印結果為:okyang
下面是記憶體情況分析:
問1:Char name[]=“y\0ng”;則列印結果為什麼?(oky)
問2:此時列印name的值,使用%s是多少?Y\0ng還是y?
(2)Strlen函數
Strlen函數計算字元串的長度(字元數)但不包括\0,是字元數不是字數。比如一個漢字占三個字元。
Strlen(“haha”);//長度為4
Strlen(“哈haha”);//長度為7而不是5
設
char name[]=“it\0cast”;
Strlen(name);值為2,因為strlen從字元串的位址開始計算,直到遇到\0為止。
假設
Char name[]=“itcast”;
Int size=strlen(name);
此時size的值為8。
(3)練習,編寫一個函數char_contains(char str[],char c),如果字元串中包含字元c,則傳回1,否則傳回0。
Int char_contains(char str[],char c)
{
//周遊整個字元串
For(int i=0,i<strlen(str);i++)
If(str[i]==c)
Return 1;
}
Return 0;
//調用語句
Int result=char_contains(“yang”,‘a’);
//使用while循環
①. While(i<strlen(str))
②. While(str[i]!=‘\0’)
③. While(str[i])
④. Int i=-1;while(str[i++])
三、字元串數組
二維字元數組,存儲兩個字元串數組,每個的長度為1,下面是兩種寫法但存儲情況是一樣的。
Char name[2][10]={“jack”,“rose”};
Char name2[2][10]={
{‘j’+‘a’+‘c’+‘k’+‘\0’},
{‘r’+‘o’+‘s’+‘e’+‘\0’}
把rose輸出:printf(“%s”,name2[1]);
輸出k:printf(“%c”,name2[0][3]);