實(shí)現(xiàn)C語(yǔ)言常用字符串庫(kù)函數(shù)
strlen
數(shù)組長(zhǎng)度的計(jì)算是通過(guò)strlen來(lái)的,它的作用就是判斷給定的數(shù)組元素個(gè)數(shù),直到碰到\0結(jié)束
函數(shù)原型
size_t strlen ( const char * str );
廢話少說(shuō),直接上代碼
int my_strlen(char *str)
{
char* ch=str;
int count=0;
while(*ch!='\0')
{
count++;
ch++;
}
return count;
}
但考慮到安全性,因?yàn)榍箝L(zhǎng)度并不會(huì)改變?cè)醋址?,所以加上const修飾char,保證該字符串的內(nèi)容不能被修改,但是可以改變指向
int my_strlen(const char *str)
{
char* ch=str;
int count=0;
while(*ch!='\0')
{
count++;
ch++;
}
return count;
}
strcpy
strcpy是將一個(gè)字符串含\0整體拷貝到另一個(gè)字符串中
原型為
char * strcpy ( char * destination, const char * source );
void my_strcpy(char* dest,const char *src)
{
char * ch=src;
while(*ch!='\0')
{
*dest=*ch;
dest++;
ch++;
}
*dest='\0';
}
同理不改變?cè)址?,所以加上const修飾。在最后記得手動(dòng)給目的字符串加上\0,這樣才能保證輸出正確
strcat
原型
char * strcat ( char * destination, const char * source );
void my_strcat(char* dest,const char *src)
{
char * ch=dest;
while(*ch!='\0')ch++;
while(*src!='\0')
{
*ch=*src;
ch++;
src++;
}
*ch='\0';
}
先遍歷跑完目的字符串,接著再將原字符串所指的值一一賦給目的字符串.而因?yàn)槭前言釉谀康淖址螅阅康淖址銐虼?/p>
strcmp
原型
int strcmp ( const char * str1, const char * str2 );
int my_strcmp(const char* str1,const char *str2)
{
assert(str1);
assert(str2);
char * s1=str1;
char * s2=str2;
while(*s1==*s2)
{
if(*s1=='\0')
{
return 0;
}
s1++;
s2++;
}
if(*s1>*s2)
{
return 1;
}
else
{
return -1;
}
}
上面代碼最后可以簡(jiǎn)化為return *s1-*s2,不過(guò)主函數(shù)里要相應(yīng)更改了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
深入解析C語(yǔ)言中的內(nèi)存分配相關(guān)問(wèn)題
這篇文章主要深入地介紹了C語(yǔ)言中的內(nèi)存分配,C語(yǔ)言編程中的內(nèi)存泄漏問(wèn)題一直以來(lái)都是C編程中的一大棘手問(wèn)題,本文從malloc和指針等方面對(duì)C內(nèi)存進(jìn)行了深層次講解,強(qiáng)烈推薦!需要的朋友可以參考下2015-08-08
C++數(shù)據(jù)結(jié)構(gòu)模板進(jìn)階的多方面分析
今天我要給大家介紹C++中的模板更深的一些知識(shí)。有關(guān)于非類型的模板參數(shù)和模板特化的一些知識(shí),感興趣的朋友快來(lái)看看吧2022-02-02
C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序
這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序,同時(shí)也包括編寫類的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下2015-09-09
C語(yǔ)言中遞歸的實(shí)際應(yīng)用與經(jīng)典問(wèn)題
函數(shù)以及函數(shù)的遞歸調(diào)用是學(xué)習(xí)C語(yǔ)言必須要掌握的內(nèi)容,且遞歸作為經(jīng)典的算法思想被廣泛應(yīng)用于程序設(shè)計(jì)中,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中遞歸的實(shí)際應(yīng)用與經(jīng)典問(wèn)題的相關(guān)資料,需要的朋友可以參考下2021-09-09
ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式
這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
M1 Macbook vscode C++ debug調(diào)試實(shí)現(xiàn)
本文主要介紹了M1 Macbook vscode C++ debug調(diào)試,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

