目錄
創(chuàng)新互聯(lián)提供做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì),成都品牌網(wǎng)站建設(shè),一元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開(kāi)發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破成百上千家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.引言:
一、庫(kù)函數(shù)模擬實(shí)現(xiàn)
1.1模擬實(shí)現(xiàn)Strlen-求字符串的長(zhǎng)度
1.2strcpy-復(fù)制字符串
1.3strcat-追加字符串
1.4strstr-查找是否存在
武俠小數(shù)中,想要成為練就絕世武功,必先要練就內(nèi)功,只有內(nèi)功厲害,在練其他招式時(shí),就能發(fā)揮他大的功力。
c語(yǔ)言的內(nèi)功,必然就是C語(yǔ)言庫(kù)函數(shù)的模擬實(shí)現(xiàn)
一、庫(kù)函數(shù)模擬實(shí)現(xiàn) 1.1模擬實(shí)現(xiàn)Strlen-求字符串的長(zhǎng)度三種方法:
方式一:計(jì)數(shù)器方法:
//計(jì)數(shù)器方式
size_t my_strlen(const char * str)
{
int count = 0;
while(*str) //‘\0’的ascii值為0
{
count++;
str++;
}
return count;
}
strlen函數(shù)返回的是‘\0’前面的字符個(gè)數(shù)。
1.參數(shù)指向的字符必須要以“\0”,結(jié)尾。
2.size_t,返回的值無(wú)符號(hào)的.
方式二:遞歸法
//使用遞歸函數(shù)
int my_strlen(const char * str)
{
if(*str == '\0')
return 0;
else
return 1+my_strlen(str+1);
}
遞歸法在使用的口訣就是“大事化小法”。
方式三:函數(shù)指針
int my_strlen(char *s)
{
char *p = s;
while(*p != ‘\0’ )
p++;
return p-s;
}
指針-指針得到的是該字符串的個(gè)數(shù)。
1.2strcpy-復(fù)制字符串strcpy的幾個(gè)特點(diǎn):1.源字符串必須以“\0”結(jié)束
???????????????????? 2.會(huì)將“\0”拷貝到目標(biāo)地址
???????????????????? 3.目標(biāo)空間必須足夠大,以確保能放下原字符串
char * my_strcpy(char * dest,char* src){
char * ret=dest; //先把目標(biāo)的指針保存起來(lái),返回的時(shí)候才能找到原始的指針
assert(dest && src);
while(*dest++ = *src++){ //后置++ ,先使用后++
;
}
}
1.3strcat-追加字符串strcat的幾個(gè)特點(diǎn):1.源字符串必須以“\0”結(jié)束
??????????????????? 2.會(huì)將“\0”追加到目標(biāo)地址中
??????????????????? 3.目標(biāo)空間必須足夠大,以確保能放下原字符串
char * my_strcat(char *dest,char *src){
assert(det && src);
char * ret=dest;
while(*dest){
dest++;
}
while(*dest ++ =*src++){
;
}
return ret;
}
1.4strstr-查找是否存在查找str2字符串是不是str1字符串的一部分;
char * my_strstr ( const char *str1, const char * str2){
assert(str1 && str2);
char *ret= str1;
char *s1,s2;
while(*ret){
s1=ret;
s2=str2;
while(s1 & s2 & (*s1 == *s2)){
s1++;
s2++;
}
ret++;
}
return ret;
}
1.5strcmp!!int my_strcmp (const char * src, const char * dst)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret< 0 )
ret = -1 ;
else if ( ret >0 )
ret = 1 ;
return( ret );
}
感謝你看到這里哦!?。?/p>
你的點(diǎn)贊是我前進(jìn)的動(dòng)力?。?/p>
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧