天天看點

c語言中子字元串處理函數,C語言字元串處理函數

C語言提供了豐富的字元串處理函數,例如字元串的輸入、輸出、合并、修改、比較、轉換、複制、搜尋等,使用這些現成的函數可大大減輕程式設計的負擔。

用于輸入輸出的字元串函數,例如printf、puts、scanf、gets等,使用時應包含頭檔案stdio.h,使用其它字元串函數則應包含頭檔案string.h。

1.字元串長度函數strlen

strlen 是 string length 的縮寫,用來獲得字元串的長度。所謂長度,就是包含多少個字元(不包括字元串結束标志 '\0')。文法格式為:

strlen(arrayName);

strlen 将傳回字元串的長度,它是一個整數。請看下面的例子:

#include

#include

int main(){

char str[]="C language";

int len = strlen(str);

printf("The lenth of the string is %d\n", len);

return 0;

}

運作結果:

The lenth of the string is 10

需要說明的是,strlen 會從字元串的第 0 個字元開始計算,直到遇到字元串結束标志 '\0'。将上面代碼中的 str 改為:

char str[]="C \0language";

那麼輸出結果就是:

The lenth of the string is 2

2.字元串連接配接函數 strcat

strcat 是 string catenate 的縮寫,意思是把兩個字元串拼接在一起,文法格式為:

strcat(arrayName1, arrayName2);

arrayName1、arrayName2 為需要拼接的字元串。

strcat 将把 arrayName2 連接配接到 arrayName1 後面,并删去 arrayName1 最後的結束标志 '\0'。

這就意味着,arrayName1 的長度要足夠,必須能夠同時容納 arrayName1 和 arrayName2,否則會越界。

strcat 傳回值為 arrayName1 的首位址。請看下面的例子:

#include

#include

int main(){

char str1[40]="My name is ";

char str2[20];

printf("Input your name:");

gets(str2);

strcat(str1,str2);

puts(str1);

return 0;

}

運作結果:

Input your name: xuhao

My name is xuhao

3.字元串複制函數strcpy

strcpy 是 string copy 的縮寫,意思是字元串複制,文法格式為:

strcpy(arrayName1, arrayName2);

strcpy 會把 arrayName2 中的字元串拷貝到 arrayName1 中,串結束标志 '\0' 也一同拷貝。請看下面的例子:

#include

#include

int main(){

char str1[15], str2[]="C Language";

strcpy(str1, str2);

puts(str1);

printf("\n");

return 0;

}

運作結果:

C Language

strcat 要求 arrayName1 要有足夠的長度,否則不能全部裝入所拷貝的字元串。

4.字元串比較函數strcmp

strcmp 是 string compare 的縮寫,意思是字元串比較,文法格式為:

strcmp(arrayName1, arrayName2);

arrayName1 和 arrayName2 是需要比較的兩個字元串。

字元本身沒有大小之分,strcmp() 是以各個字元在ASCII 碼表上對應的數值進行比較的。strcmp() 首先将 arrayName1 中第0個字元的 ASCII 碼值減去 arrayName2 中第0個字元的 ASCII 碼值,若內插補點為 0,則說明兩個字元相同,再繼續比較下個字元,若內插補點不為 0 則将內插補點傳回。例如字元串"Ac"和"ba"比較則會傳回字元"A"(65)和'b'(98)的內插補點(-33)。

傳回值:若 arrayName1 和 arrayName2 相同,則傳回0;若 arrayName1 大于 arrayName2,則傳回大于 0 的值;若 arrayName1 小于 arrayName2,則傳回小于0 的值。

下面對4組字元串進行比較。

#include

main(){

char *a = "AaBbCc";

char *b = "AbCdEf";

char *c = "aacdef";

char *d = "AaBbCc";

printf("strcmp(a, b) : %d\n", strcmp(a, b));

printf("strcmp(a, c) : %d\n", strcmp(a, c));

printf("strcmp(a, d) : %d\n", strcmp(a, d));

getchar();

}

運作結果:

strcmp(a, b) : -1

strcmp(a, c) : -1

strcmp(a, d) : 0