c語言中字串處理函式拾錦
之前在學習c語言的時候,知道c語言庫函式中有很多字串處理函式,但是沒怎麼好好利用它。最近,發現它們的作用實在太大了,而且有些是我從來都沒有用過的。今天想整理一下,方便以後使用。比較容易理解的,就沒有舉例說明。
使用有關字串處理的庫函式,務必包含標頭檔案
string.h
,即#include 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
#include
int main()
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
#include
int main()
輸出:the first char both in s1 and s2 is :e
4)匹配任一字元--strpbrk
函式原型:char*strpbrk(char*s1,char*s2)
函式說明:在字串s1中尋找字串s2中任何乙個字元相匹配的第乙個字元的位置,空字元不包括在內。
返回值:返回指向s1中第乙個相匹配的字元的指標,如果沒有匹配字元則返回空指標。
舉例:#include
#include
int main()
輸出: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)
返回值:返回指向顛倒順序後的字串指標
C語言中處理字串的函式
在c語言中有許多字串處理函式,在寫程式的時候常常想不起來或則不了解區別,今天就花點時間將這些函式做個總結,以便以後查詢使用。char buf 10 scanf s buf 輸入 tttt3 printf buf s n buf 結果 buf tttt3 char buf1 10 scanf s s ...
C語言中的字串處理函式
strcasecmp 1,函式原型 int strcasecmp const char str1,const char str2 2,功能 比較str1和str2是否相等,忽略大小寫的差異 3,標頭檔案 include 4,返回值 str1 str2 返回0 str1 str2 返回大於0的值 st...
C語言中的字串處理函式
1 strcpy 複製字串 不安全 2 strncpy 複製n個字串 安全 3 strcat 連線字串 不安全 4 strncat 連線n個字串 安全 5 strcmp 字串比較,c語言中字串比較不能用 6 strlen 字串長度 7 strset 字串重置 9 memset 記憶體重置 10 me...