天天看點

【C語言】10-字元和字元串常用處理函數

本文目錄

  • 一、字元處理函數
  • 二、字元串處理函數

說明:這個C語言專題,是學習iOS開發的前奏。也為了讓有面向對象語言開發經驗的程式員,能夠快速上手C語言。如果你還沒有程式設計經驗,或者對C語言、iOS開發不感興趣,請忽略

一、字元處理函數

下面介紹的兩個字元處理函數都是在stdio.h頭檔案中聲明的。

1.字元輸出函數putchar

putchar(65); // A

putchar('A'); // A

int a = 65;
putchar(a); // A      

上面的3種用法,輸出的都是大寫字母A。

* putchar一次隻能輸出一個字元,而printf可以同時輸出多個字元

printf("%c %c %c", 'A', 'B', 'a');      

2.字元輸入函數getchar

char c;
c = getchar();      

getchar會将使用者輸入的字元指派給變量c。

* getchar函數可以讀入空格、TAB,直到遇到回車為止。scanf則不能讀入空格和TAB。

* getchar一次隻能讀入一個字元。scanf則可以同時接收多個字元。

* getchar還能讀入回車換行符,這時候你要敲2次Enter鍵。第1次敲的回車換行符被getchar讀入,第2次敲的Enter鍵代表輸入結束。

二、字元串處理函數

下面介紹的字元串處理函數都是在string.h頭檔案中聲明的,使用前要包含這個頭檔案。

1.strlen函數

* 這個函數可以用來測量字元串的字元個數,不包括\0

【C語言】10-字元和字元串常用處理函數
1 int size = strlen("mj"); // 長度為2
2  
3 char s1[] = "lmj";
4 int size1 = strlen(s1); // 長度為3
5  
6 char s2[] = {'m', 'j', '\0', 'l', 'm', 'j', '\0'};
7 int size2 = strlen(s2); // 長度為2      
【C語言】10-字元和字元串常用處理函數

看一下第7行,strlen函數會從s2的首位址開始計算字元個數,直到遇到空字元\0為止。因為s2的第1個\0之前隻有mj這2個字元,是以長度為2。

2.strcpy函數

1 char s[10];
2 strcpy(s, "lmj");      

strcpy函數會将右邊的"lmj"字元串拷貝到字元數組s中。從s的首位址開始,逐個字元拷貝,直到拷貝到\0為止。當然,在s的尾部肯定會保留一個\0。

* 假設右邊的字元串中有好幾個\0,strcpy函數隻會拷貝第1個\0之前的内容,後面的内容不拷貝

1 char s[10];
2 char c[] = {'m', 'j', '\0', 'l', 'm', 'j', '\0'};
3 strcpy(s, c);      

最後字元串s中的内容為:mj

3.strcat函數

char s1[30] = "LOVE";
strcat(s1, "OC");      

strcat函數會将右邊的"OC"字元串拼接到s1的尾部,最後s1的内容就變成了"LOVEOC"

【C語言】10-字元和字元串常用處理函數

strcat函數會從s1的第1個\0字元開始連接配接字元串,s1的第1個\0字元會被右邊的字元串覆寫,連接配接完畢後在s1的尾部保留一個\0

* 注意下面的情況

1 char s1[30] = {'L', 'm', 'j', '\0', 'L', 'o', 'v', 'e', '\0'};
2 strcat(s1, "OC");
3 printf("%s", s1);      

第1行初始化的s1有2個\0,經過第2行的strcat函數後,輸出結果:

【C語言】10-字元和字元串常用處理函數
【C語言】10-字元和字元串常用處理函數

4.strcmp函數

* 這個函數可以用來比較2個字元串的大小

* 調用形式為:strcmp(字元串1, 字元串2)

* 兩個字元串從左至右逐個字元比較(按照字元的ASCII碼值的大小),直到字元不相同或者遇見'\0'為止。如果全部字元都相同,則傳回值為0。如果不相同,則傳回兩個字元串中第一個不相同的字元ASCII碼值的差。即字元串1大于字元串2時函數傳回值為正,否則為負。

【C語言】10-字元和字元串常用處理函數
1 char s1[] = "abc";
2 char s2[] = "abc";
3 char s3[] = "aBc";
4 char s4[] = "ccb";
5 
6 printf("%d, %d, %d", strcmp(s1, s2), strcmp(s1, s3), strcmp(s1, s4));      
【C語言】10-字元和字元串常用處理函數

輸出結果:

【C語言】10-字元和字元串常用處理函數
  • s1和s2相同,是以傳回0
  • s1和s3是第2個字元不相同,b的ASCII碼值是98,B的ASCII碼值是66,b - B = 32,是以傳回32
  • s1和s4是第1個字元就不相同,a的ASCII碼值是97,c的ASCII碼值是99,a - c = -2,是以傳回-2

繼續閱讀