軟體中,文字處理比數字處理更重要,而處理文字時需要用到字串,所以掌握字串的知識很重要。
字串一定有『\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的...