strcat(str1,str2) 意為將字符串str2連接到字符串str1之后
strcat用法如下
?
#include?#include? int?main?() { ???char?src[99],?dest[99]; ???strcpy(src,??"This?is?source"); ???strcpy(dest,?"This?is?destination"); ???strcat(dest,?src); ???printf("最終的目標(biāo)字符串:?%s",?dest); ???return?0; }
?
輸出結(jié)果:This is sourseThis is destination
strcat函數(shù)的原型如下
?
char?*strcat(char?*strDest,?const?char?*strScr)?//將源字符串加const,表明其為輸入參數(shù) { ???????char?*?p?=?strDest;?????????????//將目的字符串?dāng)?shù)組賦給p? ???????if(strDest==NULL||strScr==NULL)//對(duì)原地址和目的地址加非0斷言? ???????return?strDest;? ???????while(*p)?????????????//是while(*p!=’’)的簡(jiǎn)化形式 ???????{??????????????????????? ??????????????p++;??????????????? ???????}???????????????????????? ???????while(*strsource!=0)? ???????{ ??????????????*p=*strScr; ?????p++;?????????????//依次++以進(jìn)行連接? ?????strScr++;????? ???????} ????*p='';??????????????????????????//有無(wú)必要? ???????return?strDest;???????????????//為了實(shí)現(xiàn)鏈?zhǔn)讲僮鳎瑢⒛康牡刂贩祷?}
?
dev c++調(diào)試代碼如下
?
#include#include char?*strcat(char?*strDest,?const?char?*strScr)?//將源字符串加const,表明其為輸入?yún)?shù) { ???????char?*?p?=?strDest;?????????????//將目的字符串?dāng)?shù)組賦給p? ???????if(strDest==NULL||strScr==NULL)//對(duì)原地址和目的地址加非0斷言? ???????return?strDest;? ???????while(*p)?????????????//是while(*p!=’’)的簡(jiǎn)化形式 ???????{??????????????????????? ??????????????p++;??????????????? ???????}???????????????????????? ???????while(*strScr!=0)? ???????{ ??????????????*p=*strScr; ?????p++;?????????????//依次++以進(jìn)行連接? ?????strScr++;????? ???????} ????*p='';??????????????????????????//有無(wú)必要? ???????return?strDest;???????????????//為了實(shí)現(xiàn)鏈?zhǔn)讲僮鳎瑢⒛康牡刂贩祷?} int?main(){ ?char?str1[99]="The"; ?char?str2[99]="One"; ?printf("%s ",strcat(str1,str2)); ?return?0; }
?
輸出結(jié)果為TheOne 如果懷疑strcat函數(shù)本身發(fā)揮作用的話可以將調(diào)用的函數(shù)名稱改成strcate之類的 結(jié)果也一樣哦 來(lái) 試試看~
strcpy的用法及原型strcpy(str1,str2)是將字符串str2復(fù)制到str1中去。
其原型char *strcpy(char *dest, const char *src) 把 src 所指向的字符串復(fù)制到 dest。
需要注意的是如果目標(biāo)數(shù)組 dest 不夠大,而源字符串的長(zhǎng)度又太長(zhǎng),可能會(huì)造成緩沖溢出的情況。
關(guān)注公眾號(hào):C語(yǔ)言中文社區(qū),免費(fèi)領(lǐng)取300G編程資料
strcpy的用法如下
?
#include?#include? int?main?() { ??char?str1[]="Sample"; ??char?str2[99]; ??char?str3[99]; ??strcpy?(str2,str1); ??strcpy?(str3,"copy?successfully"); ??printf?("str1:?%s str2:?%s str3:?%s ",str1,str2,str3); ??return?0; }
?
輸出結(jié)果為 str1:Sample
?
str2: Sample str3: copy successfully
?
strcpy的原型在這里
?
char?*strcpy(char?*strDest,?const?char?*strScr) { ???????char?*p=strDest; ???????if(strDest==NULL||strScr==NULL)//對(duì)原地址和目的地址加非0斷言? ???????return?strDest;? ???????while(*strScr)???????????????????//是while(*strScr !=?’’)的簡(jiǎn)化形式; ???????{ ??????????????*strDest++?=?*strScr++; ???????} ???????*strDest?=?'';???????//當(dāng)strScr字符串長(zhǎng)度小于原strDest字符串長(zhǎng)度,時(shí),如果沒(méi)有改語(yǔ)句,? ???????????????????????????????//??就會(huì)出錯(cuò)了 ???????return?strDest;?????????????? }
?
dev c++調(diào)試過(guò)程 strcpy用strcpye代替
?
#include?#include? char?*strcpye(char?*strDest,?const?char?*strScr) { ???????char?*p=strDest; ???????if(strDest==NULL||strScr==NULL)//對(duì)原地址和目的地址加非0斷言? ???????return?strDest;? ???????while(*strScr)???????????????????//是while(*strScr !=?’’)的簡(jiǎn)化形式; ???????{ ??????????????*strDest++?=?*strScr++; ???????} ???????*strDest?=?'';???????//當(dāng)strScr字符串長(zhǎng)度小于原strDest字符串長(zhǎng)度,時(shí),如果沒(méi)有改語(yǔ)句,? ???????????????????????????????//??就會(huì)出錯(cuò)了 ???????return?strDest;?????????????? } int?main?() { ??char?str1[]="Sample"; ??char?str2[99]; ??strcpye(str2,str1); ??printf?("str1:?%s str2:?%s ",str1,str2); ??return?0; }
?
strcmp用法及原型strcmp用于比較字符串。int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串進(jìn)行比較。
其中str1和str2可以是字符串常量或者字符串變量,返回值為整形。返回結(jié)果如下規(guī)定:
① str1小于str2,返回負(fù)值;
② str1等于str2,返回0;
③ str1大于str2,返回正值;
strcmp函數(shù)實(shí)際上是對(duì)字符的ASCII碼進(jìn)行比較:首先比較兩個(gè)字符串的第一個(gè)字符,若不相等,則停止比較并得出兩個(gè)ASCII碼大小比較的結(jié)果;如果相等就接著向后第二個(gè)字符,以此類推。無(wú)論兩個(gè)字符串是什么樣,strcmp函數(shù)最多比較到其中一個(gè)字符串遇到結(jié)束符'/0'為止,就能得出結(jié)果。
特別注意:strcmp(const char *str1,const char * str2) 這里面只能比較字符串,即可用于比較兩個(gè)字符串常量,或比較數(shù)組和字符串常量,不能比較數(shù)字等其他形式的參數(shù)。
規(guī)定返回值為正數(shù),負(fù)數(shù),0 。而確切數(shù)值是依賴不同的C實(shí)現(xiàn)的。
當(dāng)兩個(gè)字符串不相等時(shí),C 標(biāo)準(zhǔn)沒(méi)有規(guī)定返回值會(huì)是 1 或 -1,只規(guī)定了正數(shù)和負(fù)數(shù)。
有些會(huì)把兩個(gè)字符的 ASCII 碼之差作為比較結(jié)果由函數(shù)值返回。
strcmp用法如下:
?
#include?#include? int?main?() { ???char?str1[99]; ???char?str2[99]; ???int?ret; ???strcpy(str1,?"abcdefF"); ???strcpy(str2,?"ABCDEFF"); ???ret?=?strcmp(str1,?str2); ???if(ret?0) ???{ ??????printf("str1?小于?str2"); ???} ???else?if(ret?>?0)? ???{ ??????printf("str1?大于?str2"); ???} ???else? ???{ ??????printf("str1?等于?str2"); ???} ???return?0; }
?
運(yùn)行結(jié)果:str1大于str2
strcmp原型如下
?
int?strcmp?(const?char?*str1,const?char?*str2) {??????????? ???????int?len?=?0; ???????while(*str1?&&?*str2?&&?(*str1?==?*str2)) ???????{ ??????????????str1++; ??????????????str2++; ???????} ???????return?*str1-*str2; }
?
dev c++調(diào)試代碼如下 strcmp用strcmpa代替
?
#include?int?strcmpa?(const?char?*str1,const?char?*str2) {??????????? ???????int?len?=?0; ???? ???????while(*str1?&&?*str2?&&?(*str1==*str2)) ???????{ ??????????????str1++; ??????????????str2++; ???????} ???????return?*str1-*str2; } int?main(void) { ???????char?str1[99]?=?{"AA"}; ???????char?str2[99]?=?{"aa"}; ???????printf("%d ",strcmpa(str1,str2)); }
?
strlen用法及原型strlen用于記錄字符串長(zhǎng)度。
strlen(const char *str) 計(jì)算字符串 str 的長(zhǎng)度,直到空結(jié)束字符,但不包括空結(jié)束字符。
strlen用法實(shí)例在這里:
?
#include?#include? int?main?() { ???char?str[99]; ???int?len; ???strcpy(str,?"You?are?my?destiny"); ???len?=?strlen(str); ???printf("%s的長(zhǎng)度是?%d ",?str,?len); ???return?0; } strlen原型如下 int?strlen(char?*str) { ????int?len?=?0; ???????while(*str++) ???????{ ??????????????len++; ???????} ???????return?len; } dev?c++調(diào)試過(guò)程如下?函數(shù)名用strlenn代替 #include? int?strlenn(char?*str) { ????int?len?=?0; ???????while(*str++) ???????{ ??????????????len++; ???????} ???????return?len; } int?main(void) { ???????char?str[99]?=?{"You?are?my?destiny"}; ???????printf("%d ",strlenn(str)); }
?
審核編輯:湯梓紅
評(píng)論
查看更多