轉(zhuǎn)帖|其它|編輯:郝浩|2010-07-20 10:27:56.000|閱讀 1170 次
概述:之前在學(xué)習(xí)C語言的時(shí)候,知道C語言庫函數(shù)中有很多字符串處理函數(shù),但是沒怎么好好利用它。最近,發(fā)現(xiàn)它們的作用實(shí)在太大了,而且有些是我從來都沒有用過的。今天想整理一下,方便以后使用,希望對大家也有所幫助。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
之前在學(xué)習(xí)C語言的時(shí)候,知道C語言庫函數(shù)中有很多字符串處理函數(shù),但是沒怎么好好利用它。最近,發(fā)現(xiàn)它們的作用實(shí)在太大了,而且有些是我從來都沒有用過的。今天想整理一下,方便以后使用。比較容易理解的,就沒有舉例說明。
使用有關(guān)字符串處理的庫函數(shù),務(wù)必包含頭文件string.h,即#include <string.h>
1、 比較字符串大小函數(shù)
1)忽略大小寫---strcasecmp
函數(shù)原型: int strcasecmp (const char *s1, const char *s2);
函數(shù)說明: 用來比較參數(shù)s1和s2字符串,比較時(shí)會自動(dòng)忽略大小寫的差異
2)忽略大小寫—stricmp
函數(shù)原型 : int stricmp(char *str1, char *str2);
函數(shù)說明:以大小寫不敏感方式比較兩個(gè)串
3) 不忽略大小寫—strcmp
函數(shù)原型 :int strcmp(char*str1,char*str2);
函數(shù)說明 :通過比較字串中各個(gè)字符的ASCII碼,來比較參數(shù)Str1和Str2字符串,比較時(shí)考慮字符的大小寫。
4) 比較一部分—strncmpi
函數(shù)原型 :int strncmpi(char *str1, char *str2, unsigned maxlen);
函數(shù)說明 :比較字符串str1和str2的前maxlen個(gè)字符
5)內(nèi)存區(qū)域比較---memcmp
函數(shù)原型 :int memcmp(void*buf1,void *buf2,unsigned int count)
函數(shù)說明 :比較內(nèi)存區(qū)域buf1和buf2的前count個(gè)字節(jié)。Void*是指任何類型的指針。
6)內(nèi)存區(qū)域部分比較-- memicmp Void*是指任何類型的指針。
函數(shù)原型 :int memicmp(void*buf1,void *buf2,unsigned int count)
函數(shù)說明 :比較內(nèi)存區(qū)域buf1和buf2的前count個(gè)字節(jié),但不區(qū)分大小寫。
以上比較函數(shù)的返回值 : 若參數(shù)1中字符串和參數(shù)中2字符串相同則返回0;
若參數(shù)1中字符串長度大于參數(shù)2中字符串長度則返回大于0 的值;
若參數(shù)1中字符串 長度小于參數(shù)2中字符串 長度則返回小于0的值。
2、 從字符串中提取子串
1) 提取子串--strstr
函數(shù)原型 :char* strstr(char*src,char*find)
函數(shù)說明 :從字符串src中尋找find第一次出現(xiàn)的位置(不比較結(jié)束符NULL)
返回值 :返回指向第一次出現(xiàn)find位置的指針,如果沒有找到則返回NULL
2) 提取分隔符間字串—strtok
函數(shù)原型 :char *strtok(char*src, char*delim);
函數(shù)說明 :分解字符串誒一組標(biāo)記串,src為要分解的字符串,delim為分隔符字符串。
首次調(diào)用時(shí),src必須指向要分解的字符串,隨后調(diào)用要把s設(shè)成NULL;
strtok中src中查找包含在delim中的字符,并用NULL(’\0’)來替換直到找遍整個(gè)字符串。
返回值 :從s開頭開始的一個(gè)個(gè)被分割的串。當(dāng)沒有被分割的串時(shí)則返回NULL。
所有delim中包含的字符都會被濾掉,并將被濾掉的地方設(shè)為一處分割的節(jié)點(diǎn)。
舉例:
#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、 字符串復(fù)制
1) 字串復(fù)制--strcpy
函數(shù)原型 :char*strcpy(char*dest,char*src)
函數(shù)說明 :把src所指由NULL結(jié)束的字符串復(fù)制到dest所指的數(shù)組中。
其中,src和dest所致內(nèi)存區(qū)域不可重疊且dest必須有足夠的空間來容納src的字符串。
返回值 :返回指向dest的指針。
2) 字串復(fù)制--strdup
函數(shù)原型 :char* strdup(char*src)
函數(shù)說明 :復(fù)制字符串src
返回值 :返回指向被復(fù)制字符串的指針,所需空間有malloc()分配且可以有free()釋放。
3) 內(nèi)存空間復(fù)制--memcpy
函數(shù)原型 :void *memcpy(void *dest,void *src,unsigned int count);
函數(shù)說明 :src和dest 所指內(nèi)存區(qū)域不能重疊;由src所致內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域中。
返回值 :返回指向dest的指針。
4、字符串連接
1)接尾連接--strcat
函數(shù)原型 :char* strcat(char*dest,char*src)
函數(shù)說明 :把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'
2)部分連接--strncat
函數(shù)原型: char* strncat(char*dest,char*src,int n);
函數(shù)說明 :把src所指字符串的前n個(gè)字符添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的’\0’)并添加’’\0’.
返回值 :返回指向dest的指針。
5、從字符串中查找字符
1)內(nèi)存區(qū)域找字符--memchr
函數(shù)原型 :void *memchr(void*buf,char ch,usigned count)
函數(shù)說明 :從buf所指內(nèi)存區(qū)域的前count個(gè)字節(jié)查找字符ch,當(dāng)?shù)谝淮斡龅阶址鹀h時(shí)停止查找。
返回值 :如果找到了,返回指向字符ch的指針;否則返回NULL
2)字串中找字符--strchr
函數(shù)原型 :char* strchr(char*src,char ch)
函數(shù)說明 :查找字符串s中首次出現(xiàn)字符ch的位置
返回值 :返回首次出現(xiàn)c的位置的指針,如果s中不存在c則返回NULL
3)搜所現(xiàn)字符--strcspn
函數(shù)原型 :int strcspn(char*src,char*find)
函數(shù)說明 :在字符串src中搜尋find中所出現(xiàn)的字符
返回值 :返回第一個(gè)出現(xiàn)的字符在src中的下標(biāo)值,即src中出現(xiàn)而不在find中出現(xiàn)的字串的長度。
舉例:
#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
函數(shù)原型:char*strpbrk(char*s1,char*s2)
函數(shù)說明:在字符串S1中尋找字符串S2中任何一個(gè)字符相匹配的第一個(gè)字符的位置,空字符不包括在內(nèi)。
返回值:返回指向S1中第一個(gè)相匹配的字符的指針,如果沒有匹配字符則返回空指針。
舉例:
#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、其他函數(shù)
1)全部轉(zhuǎn)成大寫---strupr
函數(shù)原型 :char*strupr(char*src)
函數(shù)說明 :將字符串src轉(zhuǎn)換成大寫形式,只轉(zhuǎn)換src中出現(xiàn)的小寫字母,不改變其他字符
返回值 :返回指向src的指針。
2)全部轉(zhuǎn)成小寫---strlwr
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客