C語言中string函數(shù)詳解(收藏)_第1頁
C語言中string函數(shù)詳解(收藏)_第2頁
C語言中string函數(shù)詳解(收藏)_第3頁
C語言中string函數(shù)詳解(收藏)_第4頁
C語言中string函數(shù)詳解(收藏)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C語言中String函數(shù)詳解(收藏)C語言中string函數(shù)詳解分類:C/C++學(xué)習(xí)2021-08-1022:1842人閱讀評論(1)收藏舉報(bào)PS:本文包含了大部分strings函數(shù)的說明,并附帶舉例說明。本來想自己整理一下的,發(fā)現(xiàn)已經(jīng)有前輩整理過了,就轉(zhuǎn)了過來。修改了原文一些源碼的問題,主要是用Char*字義字符串的問題,導(dǎo)致程序運(yùn)行時(shí)崩潰。另外自己重寫了部分測試程序,使其更能滿足自己測試的需要。不當(dāng)之處,還請海涵。@函數(shù)原型:Char*strdup(ConstChar*s)函數(shù)功能:字符串拷貝,目的空間由該函數(shù)分配函數(shù)返回:指向拷貝后的字符串指針參數(shù)說明:SrC-待拷貝的源字符串所屬文件:string.hviewplainCopytoClipboardprint?#inCludestdio.h#inCludestring.h#inCludealloC.hintmain(){Char*dup_str,*string=abCde;dup_str=strdup(string);printf(%s,dup_str);free(dup_str);return0;}@函數(shù)名稱:strcpy函數(shù)原型:char*strcpy(char*str1,char*str2);函數(shù)功能:把str2指向的字符串拷貝到str1中去函數(shù)返回:返回StrL即指向str1的指針參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){charstring[10];char*str1=abcdefghi;strcpy(string,str1);printf(thestringis:%s\n,string);return0;}@函數(shù)名稱:strncpy函數(shù)原型:char*strncpy(char*dest,constchar*src,intcount)函數(shù)功能:將字符串SrC中的count個(gè)字符拷貝到字符串dest中去函數(shù)返回:指向dest的指針參數(shù)說明:dest-目的字符串,SrC-源字符串,count-拷貝的字符個(gè)數(shù)所屬文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.hintmain(){char*src=bbbbbbbbbbbbbbbbbbbb;//20'b'schardest[50]=aaaaaaaaaaaaaaaaaaaa;//20'a'sputs(dest);strncpy(dest,src,10);puts(dest);return0;}輸出:viewplaincopytoclipboardprint?aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa4.*/@函數(shù)名稱:strcat函數(shù)原型:char*strcat(char*str1,char*str2);函數(shù)功能:把字符串str2接到Strl后面,市1最后的'\0'被取消函數(shù)返回:str1參數(shù)說明:所屬文件:String.hviewplaincopytoclipboardprint?#includeStdio.h#includeString.hintmain(){charbuffer[80];Strcpy(buffer,Hello);Strcat(buffer,world);printf(%S\n,buffer);return0;@函數(shù)名稱:strncat函數(shù)原型:char*strncat(char*dest,constchar*src,size_tmaxlen)函數(shù)功能:將字符串Src中前maxlen個(gè)字符連接到dest中函數(shù)返回:參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h2.#includestring.hcharbuffer[80];intmain(){strcpy(buffer,Hello);strncat(buffer,world,8);printf(%s\n,buffer);strncat(buffer,*************,4);printf(%s\n,buffer);return0;}@函數(shù)名稱:strcmp函數(shù)原型:intstrcmp(char*str1,char*str2);函數(shù)功能:比較兩個(gè)字符串StrLStr2.函數(shù)返回:StrIStr2,返回負(fù)數(shù);StrI=Str2,返回0;StrIStr2,返回正數(shù).參數(shù)說明:所屬文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){char*buf1=aaa,*buf2=bbb,*buf3=ccc;intptr;ptr=Strcmp(buf2,buf1);if(ptr0)printf(buffer2iSgreaterthanbuffer1\n);elSeprintf(buffer2iSleSSthanbuffer1\n);ptr=Strcmp(buf2,buf3);if(ptr0)printf(buffer2iSgreaterthanbuffer3\n);elSeprintf(buffer2iSleSSthanbuffer3\n);return0;}@函數(shù)名稱:strncmp函數(shù)原型:intstrncmp(char*str1,char*str2,intcount)函數(shù)功能:對str1和str2中的前count個(gè)字符按字典順序比較函數(shù)返回: 小于0:StrIStr2,等于0:StrI=Str2,大于0:StrIStr2參數(shù)說明:StrLStr2-待比較的字符串,count-比較的長度所屬文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){charStr1[]=aabbc;//charStr2[]=abbcd;//〃為使測試程序更簡練,此處假定了Strncmp只返回-1,0,1三個(gè)數(shù)charreS_info[]={'','=',''};intreS;//前1個(gè)字符比較reS=Strncmp(Str1,Str2,1);printf(1:Str1%cStr2\n,reS_info[reS+1]);14.15.//前3個(gè)字符比較16.17.res=strncmp(str1,str2,3);printf(3:str1%cstr2\n,res_info[res+1]);18.}輸出:viewplaincopytoclipboardprint?/****************************************1:str1=str23:str1str2*****************************************/@函數(shù)名稱:strpbrk函數(shù)原型:char*strpbrk(constchar*s1,constchar*s2)函數(shù)功能:得到si中第一個(gè)“同時(shí)也出現(xiàn)在s2中”字符的位置指針函數(shù)返回:位置指針參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){char*p=Findallvowels;p=strpbrk(p+1,aeiouAEIOU);while(p){printf(%s\n,p);p=strpbrk(p+1,aeiouAEIOU);}return0;}viewplaincopytoclipboardprint?1.indallvowelsallvowelsowelsels6.*/@函數(shù)名稱:strcspn函數(shù)原型:intstrcspn(constchar*s1,constchar*s2)函數(shù)功能:統(tǒng)計(jì)si中從頭開始直到第一個(gè)“來自s2中的字符”出現(xiàn)的長度函數(shù)返回:長度參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.hintmain(){printf(%d\n,strcspn(abcbcadef,cba));printf(%d\n,strcspn(xxxbcadef,cba));7.printf(%d\n,strcspn(123456789,cba));return0;}viewplaincopytoclipboardprint?1./************************039@函數(shù)名稱:strspn函數(shù)原型:intstrspn(constchar*s1,constchar*s2)函數(shù)功能:統(tǒng)計(jì)si中從頭開始直到第一個(gè)“不來自s2中的字符”出現(xiàn)的長度函數(shù)返回:位置指針參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.h#includealloc.hintmain(){printf(%d\n,strspn(abcbcadef,cba));printf(%d\n,strspn(xxxbcadef,cba));printf(%d\n,strspn(123456789,cba));return0;}viewplaincopytoclipboardprint?1./************************600************************/@函數(shù)名稱:strchr函數(shù)原型:char*strchr(char*str,charch);函數(shù)功能:找出Str指向的字符串中第一次出現(xiàn)字符Ch的位置函數(shù)返回:返回指向該位置的指針,如找不到,則返回空指針參數(shù)說明:Str-待搜索的字符串,ch-查找的字符所屬文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){char*Str=ThiSiSaString!;charch;char*p;while(1){printf(PleaSeinput achar:);ch=getchar();p=Strchr(Str,ch);if(p)printf(%ciSthe%dcharacterof\%S\\n,ch,(int)(p-Str+1),Str);elseprintf(Notfound!\n);printf(PressESCtoquit!\n\n);if(27==getch())break;fflush(stdin);}return0;}運(yùn)行結(jié)果:viewplaincopytoclipboardprint?/********************************************Pleaseinputachar:iiisthe3characterofThisisastring!PressESCtoquit!Pleaseinputachar:lNotfound!PressESCtoquit!Pleaseinputachar:ssisthe4characterofThisisastring!PressESCtoquit!13.*/@函數(shù)名稱:strrchr函數(shù)原型:char*strrchr(constchar*s,intc)函數(shù)功能:得到字符串S中最后一個(gè)含有C字符的位置指針函數(shù)返回:位置指針參數(shù)說明:所屬文件:String.hviewplainCopytoClipboardprint?1.#inCludeString.h#inCludeStdio.hintmain(){ 5.CharString[15];Char*ptr,C='r';StrCpy(String,ThiSiSaString);ptr=StrrChr(String,C);if(ptr)printf(TheCharaCter%CiSatpoSition:%d,C,ptr-String);elSeprintf(TheCharaCterwaSnotfound);return0;}@函數(shù)名稱:strstr函數(shù)原型:char*strstr(char*str1,char*str2);函數(shù)功能:找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)函數(shù)返回:返回該位置的指針,如找不到,返回空指針參數(shù)說明:所屬文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){char*str1=OpenWatcomC/C++,*str2=Watcom,*ptr;ptr=strstr(str1,str2);printf(Thesubstringis:%s\n,ptr);return0;}輸出:Thesubstringis:WatcomC/C++@函數(shù)名稱:strrev函數(shù)原型:char*strrev(char*s)函數(shù)功能:將字符串中的所有字符顛倒次序排列函數(shù)返回:指向S的指針參數(shù)說明:所屬文件:String.hviewplaincopytoclipboardprint?#includeString.h#includeStdio.hintmain(){Charforward[]=String;//原文中定義為char*是不對的,指向代碼段的指針內(nèi)容是不可變的printf(BeforeStrrev():%S,forward);Strrev(forward);printf(AfterStrrev():%S,forward);return0;}輸出:viewplaincopytoclipboardprint?/************************************BeforeStrrev():StringAfterStrrev():gnirtS@函數(shù)名稱:strnset函數(shù)原型:char*strnset(char*s,intch,size_tn)函數(shù)功能:將字符串S中前n個(gè)字符設(shè)置為Ch的值函數(shù)返回:指向S的指針參數(shù)說明:所屬文件:String.hviewplainCopytoClipboardprint?#inCludeStdio.h#inCludeString.hintmain(){CharString[]=aaaaaaaaaaaaaaaaaaaaaaa;Charletter='x';printf(StringbeforeStrnSet:%S\n,String);StrnSet(String,letter,10);printf(StringafterStrnSet: %S\n,String);11.return0;12.}輸出:viewplainCopytoClipboardprint?/*************************************************StringbeforeStrnSet:aaaaaaaaaaaaaaaaaaaaaaaStringafterStrnSet:xxxxxxxxxxaaaaaaaaaaaaa*************************************************/@函數(shù)名稱:strset函數(shù)原型:char*strset(char*s,intch)函數(shù)功能:將字符串S中所有字符設(shè)置為Ch的值函數(shù)返回:指向S的指針參數(shù)說明:所屬文件:String.hviewplainCopytoClipboardprint?#inCludeStdio.h#inCludeString.hintmain(){CharString[10]=123456789;6.CharSymbol='C';7.printf(BeforeStrSet():%S,String);8.StrSet(String,Symbol);9.printf(AfterStrSet():%S,String);10.return0;11.}@函數(shù)名稱:strtok函數(shù)原型:char*strtok(char*s1,constchar*s2)函數(shù)功能:分解s1字符串為用特定分隔符分隔的多個(gè)字符串(一般用于將英文句分解為單詞)函數(shù)返回:字符串si中首次出現(xiàn)s2中的字符前的子字符串指針參數(shù)說明:s2一般設(shè)置為si中的分隔字符規(guī)定進(jìn)行子調(diào)用時(shí)(即分割si的第二、三及后續(xù)子串)第一參數(shù)必須是NULL 在每一次匹配成功后,將si中分割出的子串位置替換為NULL(摘下鏈中第一個(gè)環(huán)),因此Si被破壞了函數(shù)會(huì)記憶指針位置以供下一次調(diào)用所屬文件:string.hviewplaincopytoclipboardprint?#includestring.h#includestdio.hintmain(){char*p;char*buffer;char*delims={.,};buffer=strdup(Findwords,allofthem.);printf(%s\n,buffer);p=strtok(buffer,delims);while(p!=NULL){printf(word:%s\n,p);p=strtok(NULL,delims);}printf(%s\n,buffer);return0;}//根據(jù)測試,可以隨時(shí)給StrtOk的第一個(gè)參數(shù)輸入一個(gè)新的字符串,開始新字符串的分隔PS:根據(jù)測試,可以隨時(shí)給Strtok的第一個(gè)參數(shù)輸入一個(gè)新的字符串,開始新字符串的分隔@函數(shù)名稱:Strupr函數(shù)原型:char*Strupr(char*S)函數(shù)功能:將字符串s中的字符變?yōu)榇髮懞瘮?shù)返回:參數(shù)說明:所屬文件:String.hviewplaincopytoclipboardprint?#includeStdio.h#includeString.hintmain(){charstring[]=abcdefghijklmnopqrstuvwxyz,*ptr;//會(huì)影響原字符串的內(nèi)存,用char[]來聲明ptr=strupr(string);printf(%s,ptr);return0;} @函數(shù)名稱:strlwr函數(shù)原型:char*strlwr(char*s)函數(shù)功能:將字符串中的字符變?yōu)樾懽址瘮?shù)返回:指向S的指針參數(shù)說明:所屬文件:String.hviewplaincopytoclipboardprint?#includeString.hintmain(){charStr[]=HOWTOSAY?;printf(%S,Strlwr(Str));return0;}@函數(shù)名稱:strerror函數(shù)原型:char*strerror(interrnum)函數(shù)功能:得到錯(cuò)誤信息的內(nèi)容信息函數(shù)返回:錯(cuò)誤提示信息字符串指針參數(shù)說明:errnum-錯(cuò)誤編號(hào)所屬文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includeerrno.hintmain(){char*buffer;buffer=strerror(errno);printf(Error:%s,buffer);return0;} @函數(shù)名稱:memcpy函數(shù)原型:void*memcpy(void*dest,constvoid*src,size_tn)函數(shù)功能:字符串拷貝函數(shù)返回:指向dest的指針參數(shù)說明:SrC-源字符串,n-拷貝的最大長度所屬文件:string.h,mem.hviewplainCopytoClipboardprint?1.#inCludestdio.h#inCludestring.hintmain(){5.charsrc[]=******************************;chardest[]=abcdefghijlkmnopqrstuvwxyz0123456709;char*ptr;printf(destinationbeforememcpy:%s\n,dest);ptr=memcpy(dest,src,strlen(src));if(ptr)printf(destinationaftermemcpy:%s\n,dest);elseprintf(memcpyfailed);return0;}輸出:viewp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論