版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
c語言函數(shù)庫第四章(字符串函數(shù))TOC\o"1-1"\h\z\uatof:字符串轉(zhuǎn)浮點型函數(shù) 1atoi:字符串轉(zhuǎn)整型函數(shù) 2atol:字符串轉(zhuǎn)長整型函數(shù) 3memchr:字符搜索函數(shù) 4memcmp:字符串比較函數(shù) 4memcpy:字符串拷貝函數(shù) 5memmove:字塊移動函數(shù) 6memset:字符加載函數(shù) 8strcat:字符串連接函數(shù) 8strchr:字符串中字符首次匹配函數(shù) 9strcmp:字符串比較函數(shù) 10strcpy:字符串拷貝函數(shù) 11strcspn:字符集逆匹配函數(shù) 12strdup:字符串新建拷貝函數(shù) 13strerror:字符串錯誤信息函數(shù) 14strlen:計算字符串長度函數(shù) 15strlwr:字符串小寫轉(zhuǎn)換函數(shù) 16strncat:字符串連接函數(shù) 16strncmp:字符串子串比較函數(shù) 17strncpy:字符串子串拷貝函數(shù) 18strpbrk:字符集字符匹配函數(shù) 19strrchr:字符串中字符末次匹配函數(shù) 20strrev:字符串倒轉(zhuǎn)函數(shù) 21strset:字符串設(shè)定函數(shù) 22strspn:字符集匹配函數(shù) 22strstr:字符串匹配函數(shù) 23strtod:字符串轉(zhuǎn)換成雙精度函數(shù) 24strtok:字符串分隔函數(shù) 25strtol:字符串轉(zhuǎn)換成長整型函數(shù) 27strtoul:字符串轉(zhuǎn)換成無符號長整型函數(shù) 28strupr:字符串大寫轉(zhuǎn)換函數(shù) 29strupr:字符串大寫轉(zhuǎn)換函數(shù) 29atof:字符串轉(zhuǎn)浮點型函數(shù)函數(shù)原型:floatatof(constchar*str);頭文件:#include<stdlib.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將字符串轉(zhuǎn)換成浮點值,也就是將字符串str轉(zhuǎn)換成浮點值然后獲取轉(zhuǎn)換后的結(jié)果。返回值:返回轉(zhuǎn)換后的浮點值#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";floatresult;result=atof(str);printf("string=%s\nfloat=%f\n",str,result);getch();#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";floatresult;result=atof(str);printf("string=%s\nfloat=%f\n",str,result);getch();return0;}例程說明:首先,程序聲明了一個字符串作為待轉(zhuǎn)換的字符串,聲明的浮點型變量result于獲取轉(zhuǎn)換結(jié)果。程序通過調(diào)用atolstrtoX函數(shù)相同。本例程的運行結(jié)果是:string=12345.67float=12345.669922strtoXstring=12345.67float=12345.669922atoi:字符串轉(zhuǎn)整型函數(shù)函數(shù)原型:intatoi(constchar*str);頭文件:#include<stdlib.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將字符串轉(zhuǎn)換成整數(shù)值,也就是將字符串str轉(zhuǎn)換成整型值然后獲取轉(zhuǎn)換后的結(jié)果。返回值:返回轉(zhuǎn)換后的整型值#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";intresult;result=atoi(str);printf("string=%s\ninteger=%d\n",str,result);#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";intresult;result=atoi(str);printf("string=%s\ninteger=%d\n",str,result);getch();getch();return0;}例程說明:首先,程序聲明了一個字符串作為待轉(zhuǎn)換的字符串,聲明的整型變量result獲取轉(zhuǎn)換結(jié)果。程序通過調(diào)用atoi將字符串轉(zhuǎn)換為相應(yīng)的整型變量,獲取轉(zhuǎn)換結(jié)果,轉(zhuǎn)換規(guī)則與strtoX函數(shù)相同。string=12345.67integer=12345本例程的運行結(jié)果是:string=12345.67integer=12345atol:字符串轉(zhuǎn)長整型函數(shù)函數(shù)原型:longatol(constchar*str);頭文件:#include<stdlib.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將字符串轉(zhuǎn)換成長整數(shù)值,也就是將字符串str轉(zhuǎn)換成長整型值然后獲取轉(zhuǎn)換后的結(jié)果。返回值:返回轉(zhuǎn)換后的長整型值#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";longresult;result=atol(str);printf("string=%s\nlong=%ld\n",str,result);getch();#include<stdio.h>#include<stdlib.h>intmain(void){char*str="12345.67";longresult;result=atol(str);printf("string=%s\nlong=%ld\n",str,result);getch();return0;}例程說明:首先,程序聲明了一個字符串作為待轉(zhuǎn)換的字符串,聲明的長整型變量result于獲取轉(zhuǎn)換結(jié)果。程序通過調(diào)用atolstrtoX函數(shù)相同。string=12345.67long=12345本例程的運行結(jié)果是:string=12345.67long=12345memchr:字符搜索函數(shù)函數(shù)原型:void*memchr(void*s,charch,unsignedn)頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在數(shù)組的前n個字節(jié)中搜索字符ch。返回值:返回一個指針,它指向chs中第一次出現(xiàn)的位置。如果在sn中找不到匹配,返回。#include<string.h>#include<stdio.h>intmain(void){char*str="IloveChina\n";char*p;p=memchr(str,'C',strlen(str));if(p)printf("%s",p);elseprintf("Thecharacterwasnotfound\n")#include<string.h>#include<stdio.h>intmain(void){char*str="IloveChina\n";char*p;p=memchr(str,'C',strlen(str));if(p)printf("%s",p);elseprintf("Thecharacterwasnotfound\n");}例程說明:IloveChina\st。在字符串str’C’’C’的指針。China如果返回值不為NULL本例程的運行結(jié)果為:Chinamemcmp:字符串比較函數(shù)函數(shù)原型:void*memcmp(char*s1,char*s2,unsignedn)頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:比較s1所指向的字符串與s2所指向的字符串的前n個字符。返回值:根據(jù)s1所指向的對象的大于、等于、小于s2所指向的對象,函數(shù)memcmp#include<stdio.h>#include<string.h>intmain(void){char#include<stdio.h>#include<string.h>intmain(void){charchar*str2="ABCDEf";ints1,s2;s1=memcmp(str1,str2,6);s2=memcmp(str1,str2,5);printf("Thecomparisonof6character\n");printf("Thecomparisonof6character\n");if(s1>0)printf("%s>%s\n",str1,str2);elseif(s1<0)printf("%s<%s\n",str1,str2);elseprintf("%s=%s\n",str1,str2);printf("Thecomparisonof5character\n");if(s2>0)printf("%s>%s\n",str1,str2);elseif(s2<0)printf("%s<%s\n",str1,str2);elseprintf("%s=%s\n",str1,str2);}例程說明:ABCDEABCDE然后應(yīng)用函數(shù)memcmp比較結(jié)果復(fù)制給變量s1和s2。顯示比較結(jié)果。TheThecomparisonof6characterABCDEF<ABCDEfThecomparisonof5characterABCDEF=ABCDEf由于字符串比較的方法是從左至右按照字符的ASCII碼進行比較的,因此在比較6個字符時,字符串“ABCDEF”<“ABCDEf”(f的ASCII值大于F的ASCII值);而只比較5個字符時,字符串“ABCDEF”=“ABCDEf”。memcpy函數(shù)原型:void*memcpy(void*destin,void*source,unsignedn)頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是source所指的對象中復(fù)制n個字符到destin種復(fù)制發(fā)生在重疊對象之間,其行為是不可預(yù)知的。返回值:destin#include<stdio.h>#include<string.h>intmain(void){#include<stdio.h>#include<string.h>intmain(void){char*s="##########";char*d="Thisisatestformemcpyfunction";char*ptr;printf("destinationbeforememcpy:%s\n",d);ptr=memcpy(d,s,strlen(s));if(ptr)ptr=memcpy(d,s,strlen(s));if(ptr)printf("destinationaftermemcpy:%s\n",d);elseprintf("memcpyfailed\n");return0;}例程說明:首先定義兩個字符串s和d,并賦初值,且d的長度大于s。顯示字符串d的原始內(nèi)容。通過函數(shù)memcpy將字符串s復(fù)制到字符串d中,并返回字符串d的首指針。如果拷貝成功,再次顯示字符串d本例程的運行結(jié)果為:destinationbeforememcpy:Thisisatestformemcpyfunctiondestinationdestinationbeforememcpy:Thisisatestformemcpyfunctiondestinationaftermemcpy: ##########testformemcpy1、memcpy與strcpy的不同在于應(yīng)用memcpymemcpy的參數(shù)為voidstrcpy只適用于字符串的拷貝。2、前面提到,如果復(fù)制過程中發(fā)生在重疊對象之間,其行為是不可預(yù)知的。例如下面這個例子:#include<string.h>#include<stdio.h>intmain(void){char*d="1234567890";char*p;p=d+3;printf("%s\n",d);memcpy(p,d,6);printf("%s\n",d);return0;}#include<string.h>#include<stdio.h>intmain(void){char*d="1234567890";char*p;p=d+3;printf("%s\n",d);memcpy(p,d,6);printf("%s\n",d);return0;}1234567890123123123012345678901231231230memmove函數(shù)原型:void*memmove(void*destin,void*source,unsignedn)頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是sourcendestinmemcpy不同的是,當(dāng)對象重疊時,該函數(shù)仍能正確執(zhí)行。返回值:destin#include<stdio.h>#include<string.h>intmain(void){char*s="##########";char*d="Thisisatestformemcpyfunction";char*ptr;#include<stdio.h>#include<string.h>intmain(void){char*s="##########";char*d="Thisisatestformemcpyfunction";char*ptr;printf("destinationbeforememmove:%s\n",ptr=memmove(d,s,strlen(s));if(ptr)printf("destinationaftermemmove: %s\n",elseprintf("memcpyfailed\n");return0;}例程說明:首先定義兩個字符串s和d,并賦初值,且d的長度大于s。顯示字符串d的原始內(nèi)容。通過函數(shù)memmove將字符串s復(fù)制到字符串d中,并返回字符串d的首指針。如果拷貝成功,再次顯示字符串d本例程的運行結(jié)果為:destinationbeforememmove:Thisisatestformemcpyfunctiondestinationdestinationbeforememmove:Thisisatestformemcpyfunctiondestinationaftermemmove: ##########testformemcpy與函數(shù)memcpy不同的是,當(dāng)對象重疊時,該函數(shù)仍能正確執(zhí)行。例如下面這個例子:#include<string.h>#include<stdio.h>intmain(void){char*d="1234567890";char*p;p=d+3;printf("%s\n",d);memmove(p,d,6);#include<string.h>#include<stdio.h>intmain(void){char*d="1234567890";char*p;p=d+3;printf("%s\n",d);memmove(p,d,6);printf("%s\n",d);return0;}1234567890123123456012345678901231234560這是因為函數(shù)memmove的復(fù)制行為類似于先從source對象中復(fù)制n個字符到一個與source和destin都不重合的含n個字符的臨時數(shù)組中作為緩沖,然后從臨時數(shù)組中再復(fù)制個字符destin所指的對象中。就本段程序而言,memmove先將字符串“123456”復(fù)制到一個臨時數(shù)組中,再將它復(fù)制到以p為首地址的字符串中。memset:字符加載函數(shù)函數(shù)原型:void*memset(void*s,intc,unsignedn)頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:把c復(fù)制到s所指向的對象的前n返回值:s的值#include<string.h>#include<stdio.h>intmain(void){char*str="AAAAAAAAAAAAAAAAAA";printf("Theoriginal#include<string.h>#include<stdio.h>intmain(void){char*str="AAAAAAAAAAAAAAAAAA";printf("Theoriginalstringis: memset(str,'B',9);printf("Thestringaftermemsetis:%s\n",str);}例程說明:AAAAAAAAAAAAAAAAA將首地址賦值給st。顯示該字符串。利用函數(shù)memset將字符串str9’Theoriginalstringis:AAAAAAAAAAAAAAAAAAThestringaftermemsetis:BBBBBBBBBAAAAAAAAATheoriginalstringis:AAAAAAAAAAAAAAAAAAThestringaftermemsetis:BBBBBBBBBAAAAAAAAAstrcat:字符串連接函數(shù)函數(shù)原型:char*strcat(char*dest,char*src);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將兩個字符串連接合并成一個字符串,也就是把字符串src連接到字符串dest后面,連接后的結(jié)果放在字符串dest中返回值:指向字符串dest的指針#include<string.h>#include<stdio.h>intmain(){chardest[20]={“”};char*hello="hello",*space="",*world="world";strcat(dest,hello);#include<string.h>#include<stdio.h>intmain(){chardest[20]={“”};char*hello="hello",*space="",*world="world";strcat(dest,hello);strcat(dest,space);strcat(dest,world);printf("%s\n",strcat(dest,space);strcat(dest,world);printf("%s\n",destination);getch();return0;}例程說明:dest串,其余三個字符串變量分別賦予初值。程序通過調(diào)用strcat函數(shù)實現(xiàn)字符串的連接,首先將字符串hellodest的末端,此時字符數(shù)組dest"hello",然后繼續(xù)調(diào)用兩次strcat函數(shù),依次將字符串space和字符串world陸續(xù)連接到字符數(shù)組dest連接操作。本例程的運行結(jié)果是:helloworld注意:本例程中,開始對字符數(shù)組dest初始化位空是必要的,對聲明的變量進行初始化是一個很好的習(xí)慣,如果不對字符數(shù)組dest進行初始化程序會產(chǎn)生運行時的錯誤,有興趣的讀者可以試試未初始化程序的輸出結(jié)果。helloworldstrchr:字符串中字符首次匹配函數(shù)函數(shù)原型:char*strchr(char*str,charc);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找給定字符的第一次匹配,也就是在字符串strc第一次出現(xiàn)的位置返回值:第一次匹配位置的指針#include<stdio.h>#include<string.h>intmain(void){charstr[15]={""};char*ptr,c='r';strcpy(str,"HelloWorld");ptr=strchr(str,c);#include<stdio.h>#include<string.h>intmain(void){charstr[15]={""};char*ptr,c='r';strcpy(str,"HelloWorld");ptr=strchr(str,c);if(ptr)printf("Thecharacter%cisatposition:%d\n",c,ptr-str);elseprintf("Thecharacterwasnotfound\n");strcpy(str,"Aloha");if(ptr)printf("Thecharacter%cisatposition:%d\n",c,ptr-str);elseprintf("Thecharacterwasnotfound\n");getch();return0;}}例程說明:了我們要查找的值。程序通過調(diào)用strcpy賦予了字符數(shù)組一個值,然后調(diào)用strchr函數(shù)在字符數(shù)組中查找第一次與字符變量c'r'個匹配字符的指針。根據(jù)返回值輸出匹配結(jié)果。程序第二次通過調(diào)用strcpy賦予了字符數(shù)組一個值,然后調(diào)用strchr數(shù)組中查找第一次與字符變量c'r'輸出匹配結(jié)果。"Aloha""Aloha"雖然將"Hello"第一次匹配相同的結(jié)果。如果匹配不成功,則顯示沒有找到。本例程的運行結(jié)果是:Thecharacterrisatposition8Thecharacterrisatposition8組中對應(yīng)的下標(biāo)。Thecharacterrisatposition8Thecharacterrisatposition8strcmp:字符串比較函數(shù)函數(shù)原型:intstrcmp(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是str1和字符串str2逐字符的進行比較,直到某個字符不相同或比較到最后一個字符為止,字符的比較為碼的比較返回值:若字符串str1大于字符串str2返回結(jié)果大于零,若字符串str1小于字符串str2返回結(jié)果小于零,若字符串str1等于字符串str2返回結(jié)果等于零例程如下:應(yīng)用strcmp比較字符串大小。#include<string.h>#include<stdio.h>int#include<string.h>#include<stdio.h>intmain(void){char*str1="Canada",*str2="China",*str3=intresult;result=strcmp(str1,str2);if(result<0)printf("%sislessthan%s",str1,str2);elseprintf("%sisnotlessthan%s",str1,str2);printf("\n");result=strcmp(str2,str3);if(result<0)if(result<0)printf("%sislessthan%s",str2,str3);elseprintf("%sisnotlessthan%s",str2,str3);getch();return0;}例程說明:首先,程序聲明了三個字符串變量并分別賦予了初值,注意字符串str2和字符串str3的區(qū)別在于首字母是否大寫,整型變量result用于記錄字符串的比較結(jié)果。程序通過調(diào)用strcmp函數(shù)比較字符串str1和字符串str2'a'ASIC'h'ASIC碼,因此比較結(jié)果為字符串str1小于字符串str2,返回結(jié)果小于零。第二次調(diào)用strcmp函數(shù)比較字符串str2和字符串str3,由于在ASIC碼表中小寫字母在后,小寫字母的ASIC'C'小于'c'str2小于字符串str3,返回結(jié)果小于零。最后將最終的結(jié)果輸出,為了使輸出結(jié)果一目了然,在兩次比較中間的printf數(shù)輸出了一個換行。本例程的運行結(jié)果是:CanadaislessthanChinaChinaislessthanchinaASIC第一次比較的結(jié)果result'a'ASIC與碼與'h'ASIC碼的差值,有興趣的讀者可以試試輸出結(jié)果。CanadaislessthanChinaChinaislessthanchinastrcpy:字符串拷貝函數(shù)函數(shù)原型:char*strcpy(char*dest,char*src);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:實現(xiàn)字符串的拷貝工作,也就是把字符串src中的內(nèi)容拷貝到字符串dest中,使兩個字符串的內(nèi)容相同。返回值:指向字符串dest的指針#include<stdio.h>#include<string.h>intmain(void){chardest[20]={""};char*src="Hello#include<stdio.h>#include<string.h>intmain(void){chardest[20]={""};char*src="Hellointresult;strcpy(dest,src);printf("%s\n",dest);result=strcmp(dest,src);if(!result)printf("destisequaltosrc");elseprintf("destisnotequaltosrc");getch();return0;return0;}例程說明:result用于記錄字符串子串的比較結(jié)果。strcpysrc中的內(nèi)容拷貝到字符數(shù)組dest者具有相同的內(nèi)容。為了驗證兩個變量中的內(nèi)容是否真的一樣,通過調(diào)用strcmp符串中的內(nèi)容進行比較。本例程的運行結(jié)果是:HelloWorlddestisequaltosrcHelloWorlddestisequaltosrc函數(shù)原型:intstrcspn(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找第一個屬于字符集的下標(biāo),即從開始有多少個字符不屬于str1中查找第一個屬于字符集str2str1中從開始一直有多少個字符不屬于字符集str2中的字符。返回值:所找到的字符串中段的長度#include<string.h>#include<stdio.h>intmain(void){char*str1="tomato",*str2="carrot";char*str="abc";int result;#include<string.h>#include<stdio.h>intmain(void){char*str1="tomato",*str2="carrot";char*str="abc";int result;result=strcspn(str1,str);if(result)printf("Thefirst%discongruent\n",result);elseprintf("Nocharacteriscongruent\n");result=strcspn(str2,str);if(result)printf("Thefirst%discongruent\n",result);elseprintf("Nocharacteriscongruent\n");getch();return0;}例程說明:首先,程序聲明了三個字符串并分別賦予初值,其中最后一個變量是用于逆匹配的字符集。strcspnstr1中的第一個字符開始檢查是不是屬于字符串str屬于字符串str中的某個字符。然后輸出匹配結(jié)果。程序第二次通過調(diào)用strspnstr2屬于字符集str中的某字符。本例程的運行結(jié)果是:Thefirst3iscongruentNocharacteriscongruentThefirst3iscongruentNocharacteriscongruentstrdup:字符串新建拷貝函數(shù)函數(shù)原型:char*strdup(char*str);頭文件:#include<stdlib.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將字符串拷貝到新分配的空間位置,也就是將str拷貝到一塊新分配的存儲制定的堆。返回值:返回指向含有該串拷貝的存儲區(qū)#include<stdio.h>#include<string.h>intmain(void){char#include<stdio.h>#include<string.h>intmain(void){char*src="Thisisthebufferchar*dest;dest=strdup(src);if(!strcmp(src,dest))printf("Copysuccess\n%s\n",dest);elseprintf("Copyfailure");free(dest);getch();return0;}例程說明:dest分配任何空間。程序通過調(diào)用strdup配一個與字符串src大小相同的存儲區(qū)并完成字符串的復(fù)制工作,然后返回該存儲區(qū)并讓dest指向該區(qū)域。程序通過調(diào)用strcmp比較復(fù)制前后的字符串,如果復(fù)制成功而這應(yīng)當(dāng)相同,函數(shù)返回值為零,并打印拷貝結(jié)果。分配的存儲區(qū)顯示的釋放。本例程的運行結(jié)果是:CopysuccessThisisthebuffertextCopysuccessThisisthebuffertextstrerror:字符串錯誤信息函數(shù)函數(shù)原型:char*strerror(interrnum);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:獲取程序出現(xiàn)錯誤的字符串信息,也就是根據(jù)錯誤代碼errnum的錯誤信息。返回值:返回錯誤信息#include<stdio.h>#include<errno.h>intmain(void){char*error;#include<stdio.h>#include<errno.h>intmain(void){char*error;inti;for(i=0;i<12;i++){error=strerror(i);printf("%s",error);}getch();return0;}例程說明:量又作為錯誤信息代碼。程序通過調(diào)用strerror有更多。Error0InvalidfunctionnumberNoError0InvalidfunctionnumberNosuchfileordirectoryPathnotfoundToomanyopenPermissiondeniedBadfilenumberMemoryarenatrashedNotenoughmemoryInvalidmemoryblockaddressInvalidenvironmentInvalidformatMemoryarenatrashedNotenoughmemoryInvalidmemoryblockaddressInvalidenvironmentInvalidformatstrlen:計算字符串長度函數(shù)函數(shù)原型:intstrlrn(char*str);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求字符串的長度,也就是求字符串str返回值:字符串str字符的個數(shù)#include<stdio.h>#include<string.h>intmain(void){charsrc1[3]={""},src2[10]={"Hello"};char*src3="Hello";printf("%d\n",strlen(src1));printf("%d\n",strlen(src2));printf("%d\n",strlen(src3));getch();return0;#include<stdio.h>#include<string.h>intmain(void){charsrc1[3]={""},src2[10]={"Hello"};char*src3="Hello";printf("%d\n",strlen(src1));printf("%d\n",strlen(src2));printf("%d\n",strlen(src3));getch();return0;}例程說明:src3與字符數(shù)組src2賦予相同的初值。程序通過調(diào)用strlen的結(jié)果是有效字符的個數(shù),因此雖然字符數(shù)組src1由十個字符變量組成,但初值為空串,因此長度為零,并不等于數(shù)組長度。由于字符串src3與字符數(shù)組src2賦予相同的初值,因此兩者長度相同。本例程的運行結(jié)果是:055src2拷貝到字符數(shù)組src1055strlwr:字符串小寫轉(zhuǎn)換函數(shù)函數(shù)原型:char*strlwr(char*str,);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):否函數(shù)功能:將字符串原有大寫字符全部轉(zhuǎn)換為小寫字符,也就是將字符串str中的所有字符變成小寫。返回值:返回指向被轉(zhuǎn)換字符串的指針#include<stdio.h>#include<string.h>intmain(void){#include<stdio.h>#include<string.h>intmain(void){char*s="You'llNeverWalkAlone";printf("%s",strlwr(s));getch();return0;}例程說明:首先,程序聲明了一個字符串為待轉(zhuǎn)換字符串并賦予初值。程序通過調(diào)用strlwr的結(jié)果。you'llneverwalkalone本例程的運行結(jié)果是:you'llneverwalkalonestrncat:字符串連接函數(shù)函數(shù)原型:char*strncat(char*dest,char*src,intn);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將一個字符串的子串連接到另一個字符串末端,也就是把字符串srcn個字符連接到字符串dest后面,連接后的結(jié)果放在字符串dest返回值:指向字符串dest的指針#include<string.h>#include<string.h>#include<stdio.h>intmain(void){#include<string.h>#include<string.h>#include<stdio.h>intmain(void){chardest[30]={""};char*favorite="Ilove",*tabs="\t\n",*language=strcnat(dest,favorite,6);strncat(dest,tabs,1);strncat(dest,language,1);printf("%s\n",dest);getch();return0;return0;}例程說明:dest初始化位空串,其余三個字符串變量分別賦予初值,其中字符串tans一個換行符。strncat函數(shù)實現(xiàn)字符串子串的連接,首先將字符串favorite的前六個字符添加到字符數(shù)組dest的末端,其效果與直接調(diào)用strcatstrncattabslanguage的首字符陸續(xù)連接到字符數(shù)組dest的末端,從而完成整個字符串子串的連接操作。tabs中的換行符添加到字符數(shù)組dest因此所有輸出結(jié)果應(yīng)在同一行。本例程的運行結(jié)果是:IloveC注意:本例程中,字符串tabs'IloveCstrncmp:字符串子串比較函數(shù)函數(shù)原型:intstrncmp(char*str1,char*str2,intn);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是str1的前n串和字符串str2的前nn個字符為止。str1nstr2nstr1n個字符組成的子串小于字符串str2nstr1n個字符組成的子串等于字符串str2n子串返回結(jié)果等于零#include<string.h>#include<string.h>intmain(void){char*str1="HelloWorld";char*str2="HelloCProgramme";intresult;result=strncmp(str1,str2,5);if(!result)#include<string.h>#include<string.h>intmain(void){char*str1="HelloWorld";char*str2="HelloCProgramme";intresult;result=strncmp(str1,str2,5);if(!result)printf("%sisidenticalto%sinthefirst5words",str1,str2);elseif(result<0)printf("%sislessthan%sinthefirst5words",str1,str2);elseprintf("%sisgreatthan%sinthefirst5words",str1,str2);printf("\n");result=strncmp(str1,str2,10);if(!result)printf("%sprintf("%sisidenticalto%sinthefirst10words",str1,str2);elseif(result<0)printf("%sislessthan%sinthefirst10words",str1,str2);elseprintf("%sisgreatthan%sinthefirst10words",str1,str2);getch();return0;}例程說明:首先,程序聲明了兩個字符串變量并分別賦予了初值,整型變量result字符串子串的比較結(jié)果。strncmpstr1str25個字符組成的子然后將比較結(jié)果輸出。strncmp函數(shù)比較字符串str2和字符串str310個字符組成的'w'和'C'ASIC'ASIC碼大,返回結(jié)果大于零。最后輸出比較結(jié)果。本例程的運行結(jié)果是:HelloWorldHelloWorldisidenticaltoHelloCProgrammeinthefirst5wordsHelloWorldisgreatthanHelloCProgrammeinthefirst10strncpy:字符串子串拷貝函數(shù)函數(shù)原型:char*strncpy(char*dest,char*src,intn);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:實現(xiàn)字符串子串的拷貝工作,也就是把字符串src中的前n個字符拷貝到字符串dest中。返回值:指向字符串dest的指針#include<stdio.h>#include<string.h>intmain(void){#include<stdio.h>#include<string.h>intmain(void){chardest[20]={""};char*src1="HelloWorld",*src2="Aloha";strncpy(dest,src1,5);strncpy(dest,src2,5);if(!strcmp(dest,src1))printf("destisequaltoelseif(!strcmp(dest,src2))printf("destisequaltosrc2");elseprintf("destis%s",dest);printf("%s\n",dest);printf("destis%s",dest);printf("%s\n",dest);getch();return0;}例程說明:用于記錄比較結(jié)果result變量。strncpy函數(shù)將字符串src1deststrncpy函數(shù)將字符串src2dest中。通過調(diào)用一系列的strcmp字符串比較函數(shù),從而達到驗證dest變量中的最終內(nèi)容的目的。最終的字符串dest中內(nèi)容的到底是什么呢,是"Hello",還是"Aloha",亦或是"HelloAloha"。通過第一次調(diào)用strncpy函數(shù),字符串dest"Hello"調(diào)用strncpy函數(shù)則會從字符串dest"Aloha""Hello"Aloha"添加到末端。本例程的運行結(jié)果是:Alohadestisequaltosrc2dest判斷中并沒有使用像上例中的resultAlohadestisequaltosrc2strpbrk:字符集字符匹配函數(shù)函數(shù)原型:char*strpbrk(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找第一個屬于字符集的字符位置,也就是在字符串str1找第一個屬于字符集str2中任意字符的位置。返回值:返回第一個匹配字符的指針#include<stdio.h>#include<string.h>intmain(void){char*str1="Thereare5pigsinthehogpen";char*str2="0123456789";char*result;#include<stdio.h>#include<string.h>intmain(void){char*str1="Thereare5pigsinthehogpen";char*str2="0123456789";char*result;result=strpbrk(str1,str2);if(result)printf("%s\n",result++);elseprintf("Therearenonumbersanymore");result=strpbrk(result,str2);if(result)printf("%s\n",result++);elseelseprintf("Therearenonumbersanymore");getch();return0;}例程說明:用于記錄匹配字符的位置。strcspnstr1字符集str2str1二次通過調(diào)用strspn第一個字符的字符串字串輸出。本例程的運行結(jié)果是:5pigsinthehogpenTherearenonumbersanymore因此我們可以利用該指針輸出字符串的字串5pigsinthehogpenTherearenonumbersanymorestrrchr:字符串中字符末次匹配函數(shù)函數(shù)原型:char*strrchr(char*str,charc);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找給定字符的最后一次匹配,也就是在字符串str中查找字符c最后一次出現(xiàn)的位置返回值:最后一次匹配位置的指針#include<stdio.h>#include<string.h>intmain(void){charstr[15]={""};char*ptr,c='o';strcpy(str,"HelloWorld");ptr=strchr(str,c);#include<stdio.h>#include<string.h>intmain(void){charstr[15]={""};char*ptr,c='o';strcpy(str,"HelloWorld");ptr=strchr(str,c);if(ptr)printf("Thefirstcharacter%cisatposition:%d\n",c,ptr-str);elseprintf("Thecharacterwasnotfound\n");ptr=strrchr(str,c);if(ptr)printf("Thelastcharacter%cisatposition:%d\n",c,ptr-str);elseprintf("Thecharacterwasnotfound\n");getch();printf("Thecharacterwasnotfound\n");getch();return0;}例程說明:了我們要查找的值。程序通過調(diào)用strcpy賦予了字符數(shù)組一個值,然后調(diào)用strchr查找第一次與字符變量c'o'一個匹配字符的指針。根據(jù)返回值輸出匹配結(jié)果。然后程序調(diào)用strrchr函數(shù)在字符數(shù)組中查找最后一次與字符變量c'o'字符,最后根據(jù)返回值輸出匹配結(jié)果。字符,因此調(diào)用strchrstrrchr字符的指針。如果匹配不成功,則顯示沒有找到。本例程的運行結(jié)果是:Thefirstcharacterrisatposition4Thelastcharacterrisatposition7注意:本例程中,如果字符串中只有一個'o'字符,那么無論調(diào)用哪種字符串中字符匹配函數(shù)都會返回相同的結(jié)果。Thefirstcharacterrisatposition4Thelastcharacterrisatposition7strrev:字符串倒轉(zhuǎn)函數(shù)函數(shù)原型:char*strrev(char*str);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):否函數(shù)功能:將字符串進行倒轉(zhuǎn),也就是將字符串str中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個字符交換,以此類推。返回值:返回倒轉(zhuǎn)后字符串的指針#include<stdio.h>#include<string.h>intmain(void){char*str="AblewasIereIsawElba";printf("Before:%s\n",str);strrev(str);#include<stdio.h>#include<string.h>intmain(void){char*str="AblewasIereIsawElba";printf("Before:%s\n",str);strrev(str);printf("After:%s\n",str);getch();return0;}例程說明:思,類似于回文。程序通過調(diào)用strrev交換,第二個字符與倒數(shù)第二個字符交換,以此類推。最后將倒轉(zhuǎn)前后字符串的值打印出來。本例程的運行結(jié)果是:AblewasAblewasIereIsawablEwasIereIsawstrset:字符串設(shè)定函數(shù)函數(shù)原型:char*strset(char*str,charc);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):否函數(shù)功能:將字符串原有字符全部設(shè)定為指定字符,也就是將字符串str中的所有字符全部用字符c進行替換.返回值:返回指向被替換字符串的指針#include<stdio.h>#include<string.h>intmain(void){#include<stdio.h>#include<string.h>intmain(void){charstr[11]="0123456789";charsymbol='a';printf("Before:%s\n",str);strset(str,symbol);printf("After:%s\n",str);getch();return0;}例程說明:替換的字符。程序通過調(diào)用strset重新設(shè)定了字符串的值。本例程的運行結(jié)果是:0123456789aaaaaaaaaa0123456789aaaaaaaaaastrspn:字符集匹配函數(shù)函數(shù)原型:intstrspn(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找第一個不屬于字符集的下標(biāo),即從開始有多少個字符屬于str1中查找第一個不屬于字符集str2str1中從開始一直有多少個字符屬于字符集str2中的字符。返回值:所找到的字符串中段的長度#include<string.h>#include<stdio.h>Intmain(void){char*str1="cabbage",*str2="potato";char*str="abc";int result;#include<string.h>#include<stdio.h>Intmain(void){char*str1="cabbage",*str2="potato";char*str="abc";int result;result=strspn(str1,str);if(result)printf("Thefirst%discongruent\n",result);elseprintf("Nocharacteriscongruent");result=strspn(str2,str);if(result)printf("Thefirst%discongruent\n",result);elseprintf("Nocharacteriscongruent");getch();return0;}例程說明:字符集。程序通過調(diào)用strspn進行字符集的匹配,它從字符串str1中的第一個字符開始檢查是不是屬于字符串str不屬于字符串str中的任何一個字符。然后輸出匹配結(jié)果。程序第二次通過調(diào)用strspnstr2屬于字符集str中的任意字符。本例程的運行結(jié)果是:Thefirst5iscongruentNocharacteriscongruentThefirst5iscongruentNocharacteriscongruentstrstr:字符串匹配函數(shù)函數(shù)原型:char*strstr(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是str1中查找第一次出現(xiàn)字符串str2的位置。#include<stdio.h>#include<string.h>intmain(void){char*str1="BorlandInternational",*str2="nation";char*result;result=strstr(str1,str2);if(result)printf("Thesubstringis:%s\n",ptr);#include<stdio.h>#include<string.h>intmain(void){char*str1="BorlandInternational",*str2="nation";char*result;result=strstr(str1,str2);if(result)printf("Thesubstringis:%s\n",ptr);elseprintf("Notfoundthesubstring");getch();return0;}例程說明:用于記錄匹配字符串的位置。strstrstr1str2位置,返回匹配結(jié)果。成功顯示沒有找到。本例程的運行結(jié)果是:Thesubstringisnational字符串首字符的指針。Thesubstringisnationalstrtod:字符串轉(zhuǎn)換成雙精度函數(shù)函數(shù)原型:doublestrtod(char*str,char**endptr);頭文件:#include<stdlib.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將字符串轉(zhuǎn)換非雙精度值,也就是將字符串str轉(zhuǎn)換為雙精度值,其中進行endptr處停止進行。返回值:返回轉(zhuǎn)換后的雙精度結(jié)果#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(void){charstr[20],*endptr;doubleresult;while(1)#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(void){charstr[20],*endptr;doubleresult;while(1){{printf("Inputafloat:");gets(str);result=strtod(str,&endptr);if(result==-1)printf("Thenumberis%lf\n",str,result);elsebreak;}getch();return0;}例程說明:針,雙精度result用于獲取轉(zhuǎn)換結(jié)果。程序通過循環(huán)不斷接收從標(biāo)準(zhǔn)輸入流中輸入的字符串,并通過調(diào)用strtod環(huán)的最后將轉(zhuǎn)換結(jié)果打印出來。程序規(guī)定將字符串"-1"條件總是成立的。如果輸入一個正確的雙精度字符串,程序會正確的轉(zhuǎn)換并補齊尾數(shù);如果輸入整本例程的運行結(jié)果是:Inputafloat:4.2Thenumberis4.20000Inputafloat:79Thenumberis79.00000Inputafloat:Inputafloat:4.2Thenumberis4.20000Inputafloat:79Thenumberis79.00000Inputafloat:Thenumberis1.111111Inputafloat:34.45abcThenumberis34.450000Inputafloat:abcThenumberis0.000000Inputafloat:-1strtok:字符串分隔函數(shù)函數(shù)原型:char*strstr(char*str1,char*str2);頭文件:#include<string.h>是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:在字符串中查找單詞,這個單詞始有第二個字符串中定義的分隔符分開,也就是在字符串str1中查找由字符串str2二個單詞。#include<stdio.h>#include<string.h>intmain(void){char*str1="Iamvery\thappy,to,stduy\nC\nprogramme";char*str2=",\t\n";char*token;printf("%s\n\nTokens:\n",str1);token=strtok(str1,str2);while(token!=NULL)#include<stdio.h>#include<string.h>intmain(void){char*str1="Iamvery\thappy,to,stduy\nC\nprogramme";char*str2=",\t\n";char*token;printf("%s\n\nTokens:\n",str1);token=strtok(str1,str2);while(token!=NULL){printf("%s\n",token);token=strtok(NULL,str2);}getch();return0;}例程說明:是用于分隔的分隔符集,最后一個token串中有許多分隔符。為了突出分隔結(jié)果,我們首先將字符串str1進行輸出。st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船用桁項目運營指導(dǎo)方案
- 利用可再生資源生產(chǎn)電能行業(yè)營銷策略方案
- 玩具棱鏡項目營銷計劃書
- 偵探服務(wù)行業(yè)經(jīng)營分析報告
- 藥用薄荷醇項目運營指導(dǎo)方案
- 含藥物的糖果產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 人壽保險承保行業(yè)市場調(diào)研分析報告
- 醫(yī)用充氣軟墊產(chǎn)品供應(yīng)鏈分析
- 化妝臺梳妝臺產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 市場調(diào)查的設(shè)計行業(yè)經(jīng)營分析報告
- 房屋整改方案
- TBIA 7-2022 骨科疾病診療數(shù)據(jù)集-機器人輔助全膝關(guān)節(jié)置換
- 2024至2030年中國醫(yī)療衛(wèi)生行業(yè)分析及發(fā)展預(yù)測報告
- 鳳兮凰兮(2022年山東棗莊中考語文試卷記敘文閱讀題及答案)
- 員工入職審批表
- 現(xiàn)代設(shè)施農(nóng)業(yè)技術(shù)與應(yīng)用考核試卷
- 電動飛機推進電機發(fā)展及關(guān)鍵技術(shù)綜述
- 期中 (試題) -2024-2025學(xué)年譯林版(三起)(2024)英語三年級上冊
- 九年級化學(xué)上冊 第2單元《課題2 氧氣》教學(xué)設(shè)計 (新版)新人教版
- 山東濱盛文旅體育產(chǎn)業(yè)集團有限公司招聘筆試題庫2024
- 掛靠、被掛靠核算表格
評論
0/150
提交評論