C語言字符串

 

C語言字符串數組

1、字符串基礎函數

注意:字符串必定以\0結尾。3d

Printf(「yang\n」);blog

其中yang爲字符串常量,「yang」=‘y’+‘a’+‘n’+‘g’+‘\0’。字符串由不少的字符組成,一般使用字符數組來存儲字符串,如char name[10]=「yang」;也能夠以printf(name);的形式輸出,即經過數組來訪問字符串,但會有警告。由於默認狀況下,printf函數只接受字符串常量做爲參數(對變量並未寫明)。內存

字符串的三種寫法:字符串

  1. Char name[8]=「yang」;//數組佔用了8個字節的存儲空間,可是隻含有5個字符。
  2. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘\o’};
  3. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘0’};

這三種寫法在內存中的表現都是同樣的。it

 

Char name[]={‘y’+‘a’};前面不寫個數,不是一個字符串,只能說是一個普通的字符數組。ast

char name[]=「yang」;class

Name[1]=‘o’;把字符串的第二個元素值由a改爲o。基礎

 

2、字符串使用注意點

(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」;

Char name2[]={‘o’+‘k’};

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++])

 

3、字符串數組

二維字符數組,存儲兩個字符串數組,每一個的長度爲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]);

相關文章
相關標籤/搜索