1、 比較字串大小函數
1) 忽略大小寫---strcasecmp
函數原型: int strcasecmp (const char *s1, const char *s2);
函數說明: 用來比較參數s1和s2字串,比較時會自動忽略大小寫差異
2)忽略大小寫—stricmp
函數原型:int stricmp(char *str1, char *str2);
函數說明:以大小寫不敏感方式比較兩個串
3) 不忽略大小寫—strcmp
函數原型:int strcmp(char*str1,char*str2);
函數說明:通過比較字串中各個字元的ASCII碼,來比較參數Str1和Str2字串,比較時考慮字元的大小寫。
4) 比較一部分—strncmpi
函數原型:int strncmpi(char *str1, char *str2, unsigned maxlen);
函數說明:比較字串str1和str2的前maxlen個字元
5)記憶體地區比較---memcmp
函數原型:int memcmp(void*buf1,void *buf2,unsigned int count)
函數說明:比較記憶體地區buf1和buf2的前count個位元組。Void*是指任何類型的指標。
6)記憶體地區部分比較-- memicmp Void*是指任何類型的指標。
函數原型:int memicmp(void*buf1,void *buf2,unsigned int count)
函數說明:比較記憶體地區buf1和buf2的前count個位元組,但不區分大小寫。
以上比較函數的傳回值: 若參數1中字串和參數中2字串相同則返回0;
若參數1中字串長度大於參數2中字串長度則返回大於0 的值;
若參數1中字串 長度小於參數2中字串 長度則返回小於0的值。 2、 從字串中提取子串
1) 提取子串--strstr
函數原型:char* strstr(char*src,char*find)
函數說明:從字串src中尋找find第一次出現的位置(不比較結束符NULL)
傳回值:返回指向第一次出現find位置的指標,如果沒有找到則返回NULL
2) 提取分隔字元間字串—strtok
函數原型:char *strtok(char*src, char*delim);
函數說明:分解字串誒一組標記串,src為要分解的字串,delim為分隔字元字串。
首次調用時,src必須指向要分解的字串,隨後調用要把s設成NULL;
strtok中src中尋找包含在delim中的字元,並用NULL(’\0’)來替換直到找遍整個字串。
傳回值:從s開頭開始的一個個被分割的串。當沒有被分割的串時則返回NULL。
所有delim中包含的字元都會被濾掉,並將被濾掉的地方設為一處分割的節點。
舉例:
#include <string.h>
#include <stdio.h>
int main(){
char *s="Golden Global View";
char *d=" ";
char *p;
p=strtok(s,d);
while(p){
printf("%s\n",p);
strtok(NULL,d);
}
return 0;
}
輸出:Golden
Global
View
3、 字串複製
1) 字串複製--strcpy
函數原型:char*strcpy(char*dest,char*src)
函數說明:把src所指由NULL結束的字串複製到dest所指的數組中。
其中,src和dest所致記憶體地區不可重疊且dest必須有足夠的空間來容納src的字串。
傳回值:返回指向dest的指標。
2) 字串複製--strdup
函數原型:char* strdup(char*src)
函數說明:複製字串src
傳回值:返回指向被複製字串的指標,所需空間有malloc()分配且可以有free()釋放。
3) 記憶體空間複製--memcpy
函數原型:void *memcpy(void *dest,void *src,unsigned int count);
函數說明:src和dest 所指記憶體地區不能重疊;由src所致記憶體地區複製count個位元組到dest所指記憶體地區中。
傳回值:返回指向dest的指標。
4、字串串連
1)接尾串連--strcat
函數原型:char* strcat(char*dest,char*src)
函數說明:把src所指字串添加到dest結尾處(覆蓋dest結尾處的'\0')並添加'\0'
2)部分串連--strncat
函數原型:char* strncat(char*dest,char*src,int n);
函數說明:把src所指字串的前n個字元添加到dest結尾處(覆蓋dest結尾處的’\0’)並添加’’\0’.
傳回值:返回指向dest的指標。
5、從字串中尋找字元
1)記憶體地區找字元--memchr
函數原型:void *memchr(void*buf,char ch,usigned count)
函數說明:從buf所指記憶體地區的前count個位元組尋找字元ch,當第一次遇到字元ch時停止尋找。
傳回值:如果找到了,返回指向字元ch的指標;否則返回NULL
2)字串中找字元--strchr
函數原型:char* strchr(char*src,char ch)
函數說明:尋找字串s中首次出現字元ch的位置
傳回值:返回首次出現c的位置的指標,如果s中不存在c則返回NULL
3)搜所現字元--strcspn
函數原型:int strcspn(char*src,char*find)
函數說明:在字串src中搜尋find中所出現的字元
傳回值:返回第一個出現的字元在src中的下標值,即src中出現而不在find中出現的字串的長度。
舉例:
#include <string.h>
#include <stdio.h>
int main(){
char *s="Golden Global View";
char *r="new";
int n;
n=strcspn(s,r);
printf("The first char both in s1 and s2 is: %c",s[n]);
return 0;
}
輸出:The first char both in s1 and s2 is :e
4)匹配任一字元--strpbrk
函數原型:char*strpbrk(char*s1,char*s2)
函數說明:在字串S1中尋找字串S2中任何一個字元相匹配的第一個字元的位置,Null 字元不包括在內。
傳回值:返回指向S1中第一個相匹配的字元的指標,如果沒有匹配字元則返回null 指標。
舉例:
#include <stdio.h>
#include <string.h>
int main(){
char *s1="Welcome To Beijing";
char *s2="BIT";
char *p;
p=strpbrk(s1,s2);
if(p)
printf("%s\n",p);
else printf("Not Found!\n");
return 0;
}
輸出:To Beijing
6、其他函數
1)全部轉成大寫---strupr
函數原型:char*strupr(char*src)
函數說明:將字串src轉換成大寫形式,只轉換src中出現的小寫字母,不改變其他字元
傳回值:返回指向src的指標。
2)全部轉成小寫---strlwr
函數原型:char*strlwr(char*src)
函數說明:將字串src轉換成小寫形式,只轉換src中出現的大寫字母,不改變其他字元
傳回值:返回指向src的指標。
3)將字串逆向--strrev
函數原型:char*strrev(char*src)
函數說明:把字串src的所有字元的順序顛倒過來(不包括NULL)
傳回值:返回指向顛倒順序後的字串指標