C語言 陣列(字元陣列)

2021-08-17 04:06:54 字數 3198 閱讀 3760

軟體中,文字處理比數字處理更重要,而處理文字時需要用到字串,所以掌握字串的知識很重要。

字串一定有『\0』結尾,只有以『\0』結尾的字元陣列才能稱為字串。

'\0'是字串的標誌,也是字串結束的標誌。

一、字串的定義

char arr[10];

char brr[5] = ;//不是字串,沒有'\0'

char crr[5] = ;//最後乙個元素crr[4] = '/0',是字串

//字串:用「」包含,它一定以'/0'結尾

char drr[5] = "abcd";//字串:用「」包含,它一定以'/0'結尾

char err[10] = ;//是字串,輸出:ab

char brr[10] = ;//brr[5]~brr[9]的值都是'\0'

錯誤定義:

int n = 10;

int a[n];//不合法

字元'\0'代表ascii碼為0的字元。即『\0』就是0。

asii碼為0的字元不是乙個可以顯示的字元,而是乙個「空操作符」,即它什麼也不做。

用'\0'來作為字串結束標誌不會產生附加的操作或增加有效字元,只起乙個供辨別的標誌。

注:字串本身裡不能包含'\0'.

因為字串遇到第乙個'\0'結束,後面元素無需再看,如下:

#include

#include

int main()

;//是字串

printf("%s\n",err);//輸出:ab }

判斷字串,**例子如下:

char arr[10] = ; //是

char brr = "abcd"; //是

char crr = ; //不是,沒有『\0』

char drr[3] = "abc"; //不是

char err[3] = ; //不是

char frr[10] = "abcd"; //是

二、字串的操作

char arr = "abcde";

char brr[10] = "x";

以下希望能支援的操作,實際不能做到,需要自己實現

1、brr = arr;   //複製 error,陣列不能整體賦值

2、brr += arr; //鏈結 error

3、if(arr > brr); 

else   //比較 error,語句正常,語法錯誤

(一)字串複製操作

因為陣列是集合,字串不能整體複製,可分別給每個元素賦值。

字串無需傳長度,遇到『\0』則結束。

1、遍歷字元陣列的第一種方式

void mystrcpy1(char *des,char *src)

des[i] = '\0';

}

des[i] == *(des+i),將以上**轉化如下:

void mystrcpy2(char *des,char *src)

*(des+i) = '\0';

}

2、遍歷字元陣列的第二種方式

void mystrcpy3(char *des,const char *src)*des = '\0';}

3、第二方式中while語句裡的內容可換成 *des++ = *src++,如下:

void mystrcpy4(char*des,char *src)

*des = '\0';

}

4、

void mystrcpy5(char *des,char *src)

//後置++先不加,迴圈為真時,繼續下一次的操作,遇'\0'跳出。

注:0是判斷while迴圈的條件。

此種方法雖語句簡潔,但可讀性差,不可取。

根據while迴圈舉個例子如下:

int a = 100;

while(a = 5)

printf("true\n");

output: true

a = 5是賦值語句,非0永真

5、常用方法引用strcpy()庫函式

需加標頭檔案 #include

三、assert斷言的使用

加標頭檔案#include

一定不允許某種情況出現(客觀情況)

char * mystrcpy(char *des,const char *src)

char *p = des;

while(*des++ = *src++);

return p;

}int div(int a,int b)

四、求字串的長度

①庫函式strlen();

需加標頭檔案#include

#include #include int main()

//output:5

注意:統計字串的有效長度,不包含'\0'

②不用庫函式,自己編寫函式實現求字串長度,如下:

int mystrlen(const char *str)

int count = 0;

while(*str != '\0')

return count;

}

問題:求字元陣列所佔的位元組數sizeof,及長度strlen.

#include #include int main()

總結:sizeof表示實際占用的位元組數,而陣列裡不考慮『\0』。

C語言(字元陣列)

編寫程式時,經常輸出一些字元資訊,這些資訊通常是由多個字元組成的。將陣列元素定義為char型別,用陣列來存放字元資訊。通常採用迴圈方式來實現輸入輸出功能。使用字元陣列儲存字串 void main for int i 0 i 6 i getchar 複製 0 迴圈結束 void main getcha...

C語言字元陣列

一 c語言中的字串 字串 由零個或多個字元組成且通過 雙引號括起來的有限序列就叫做字串。在c語言中沒有字串型別,故我們用 字元陣列來處理字串。二 字元陣列的定義 因為字元陣列是存放字元的陣列,故其 與陣列定義類似。其定義一般為 char a 10 表示定義了10個位元組的連續記憶體空間。三 字元陣列...

C語言 字元陣列

字元陣列 當把字串儲存到陣列中時,需要注意一些點。首先對陣列的定義應用char定義,其次,陣列的寬度一定要比字串的長度長,因為字串的末尾還帶有 0 當使用 s進行輸入和輸出。常用的存於string庫檔案中的一些字串函式 1 strcpy 複製字串。strncpy str,src,3 strncpy的...