C語言:字符串和常見字符串函數

一、字符串

  • C語言中無字符串變量,用字符數組處理字符串。
  • 規定C風格的字符串都是以NULL空字符(’\0’)作爲終結符結尾。由於它是字符串的終止符,但它本身並不是字符串的一部分, 所以字符串的長度並不包括NULL字節,如strlen函數。而且C標準庫中提供的各種字符串處理函數都要求提供的字符串或字符數組必須以空字符結束,否則會出現不可預料的結果。

初始化的方法

  • 逐個字符賦值
  • 用字符串常量

char ch[6]={“Hello”}; char ch[6]=“Hello”; char ch[]=“Hello”;
在這裏插入圖片描述
char fruit[][7]={“Apple”,”Orange”,”Grape”,”Pear”,”Peach”};
在這裏插入圖片描述

二、標準庫中的常用的字符串處理函數

C標準庫中頭文件<string.h>

求字符串長度的函數strlen

  • 格式:strlen(字符數組名)

  • 功能:計算字符串長度

  • 返值:返回字符串長度,不包括‘\0’在內

  • 注意:\xhh 表示十六進制數代表的符號,\ddd 表示8進制的

char s1[10]= {'a','\0','B','C','\0','D'};
char s2[ ] = "\t\v\\\0will\n";
char s3[ ] = "\x69\141\n"; 

//s1第二個字符爲'\0'結束符,故strlen計算出來爲1,但實際長度爲10
printf("s1: %d %d\n",strlen(s1),sizeof(s1)/sizeof(char));   //s1: 1 10

//s2的前三個字符爲 '\t','\v'.'\\'(符號\的轉義字符),第四個爲結束符'\0'
printf("s2: %d\n",strlen(s2));  // s2: 3

// \x69表示字母i的十六進制 ,\h141爲字母a的8進制 
printf("s3: %d\n",strlen(s3));  // s3: 3
puts(s3);  //ia

在這裏插入圖片描述

字符串拷貝函數

  • strcpy函數
  • 格式:strcpy(字符數組1,字符串2)
  • 功能:將字符串2,拷貝到字符數組1中去
  • 返值:返回字符數組1的首地址
  • 說明:字符數組1必須足夠大;拷貝時‘\0’一同拷貝
char str1[] = "We are csdn!";
char str2[] = "Hello!";
strcpy(str1, str2);   //str1 = Hello!
  • strncpy函數
  • 原型:strncpy(str1,str2,n);
  • 功能:將字符串str2中的前n個字符複製到字符串str1的前n個字符中
  • 返回:返回字符數組1的首地址
  • 注意:不會清除str1中全部字符串,只會改變前n個字符串; n不能大於字符串str1、str2的長度
char str1[] = "We are csdn!";
char str2[] = "Hello!";
strncpy(str1, str2, 3);
printf("str1 = %s\n", str1); //str1 = Helare csdn!

字符串連接函數strcat

  • 格式:strcat(字符數組1,字符數組2)
  • 功能:把字符數組2連到字符數組1後面
  • 返值:返回字符數組1的首地址
  • 說明:字符數組1必須足夠大;連接前,兩串均以‘\0’結束;連接後,串1的‘\0’取消,新串最後加‘\0’
char str1[20] = "We are csdn!";
char str2[] = "Hello!";
strcat(str1, str2);
printf("str1 = %s\n", str1); //str1 = We are csdn!Hello!

字符串比較函數strcmp

  • 格式:strcmp(字符串1,字符串2)
  • 功能:比較兩個字符串
  • 比較規則:對兩串從左向右逐個字符比較(ASCII碼),直到遇到不同字符或‘\0’爲止
  • 返值:返回int型整數
    - a. 若字符串1< 字符串2, 返回負整數
    - b. 若字符串1> 字符串2, 返回正整數
    - c. 若字符串1== 字符串2, 返回零
char str1[] = "Wearecsdn!";
char str2[] = "Wearecsdn!";
char str3[] = "Wearea!";
char str4[] = "Wearef!";
char str5[] = "Weare"
int cmp1 = strcmp(str1, str2);        //cmp1=0
int cmp2 = strcmp(str1, str3);        //cmp2=1
int cmp3 = strcmp(str1, str4);        //cmp3=-1
int cmp4 = strcmp(str1, str5);        //cmp4=1

其他常見的字符串函數

  • strncat(p, p1, n) 附加指定長度字符串
  • strcasecmp忽略大小寫比較字符串
  • strncmp(p, p1, n) 比較指定長度字符串
  • strchr(p, c) 在字符串中查找指定字符
  • strstr(p, p1) 查找字符串
  • isalpha() 檢查是否爲字母字符
  • isupper() 檢查是否爲大寫字母字符
  • islower() 檢查是否爲小寫字母字符
  • isdigit() 檢查是否爲數字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章