實(shí)現(xiàn)C語言常用字符串庫函數(shù)
strlen
數(shù)組長度的計算是通過strlen來的,它的作用就是判斷給定的數(shù)組元素個數(shù),直到碰到\0結(jié)束
函數(shù)原型
size_t strlen ( const char * str );
廢話少說,直接上代碼
int my_strlen(char *str)
{
char* ch=str;
int count=0;
while(*ch!='\0')
{
count++;
ch++;
}
return count;
}
但考慮到安全性,因?yàn)榍箝L度并不會改變源字符串,所以加上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是將一個字符串含\0整體拷貝到另一個字符串中
原型為
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';
}
同理不改變原字符串,所以加上const修飾。在最后記得手動給目的字符串加上\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;
}
}
上面代碼最后可以簡化為return *s1-*s2,不過主函數(shù)里要相應(yīng)更改了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++學(xué)習(xí)筆記std::vector底層原理及擴(kuò)容
這篇文章主要為大家介紹了C++學(xué)習(xí)之std::vector底層原理及擴(kuò)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Cocos2d-x中使用CCScrollView來實(shí)現(xiàn)關(guān)卡選擇實(shí)例
這篇文章主要介紹了Cocos2d-x中使用CCScrollView來實(shí)現(xiàn)關(guān)卡的選擇實(shí)例,本文在代碼中用大量注釋講解了CCScrollView的使用,需要的朋友可以參考下2014-09-09
C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狢語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
Visual Studio 2019 DLL動態(tài)庫連接實(shí)例(圖文教程)
這篇文章主要介紹了Visual Studio 2019 DLL動態(tài)庫連接實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
C語言數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹(AVL樹)實(shí)現(xiàn)方法示例
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹(AVL樹)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C語言平衡二叉樹的相關(guān)定義與使用技巧,需要的朋友可以參考下2018-01-01
C語言學(xué)習(xí)之鏈表的實(shí)現(xiàn)詳解
鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。這篇文章主要介紹了C語言中鏈表的實(shí)現(xiàn),需要的可以參考一下2022-11-11

