實(shí)現(xiàn)C語言常用字符串庫函數(shù)
strlen
數(shù)組長度的計(jì)算是通過strlen來的,它的作用就是判斷給定的數(shù)組元素個(gè)數(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度并不會(huì)改變源字符串,所以加上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'; }
同理不改變原字符串,所以加上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; } }
上面代碼最后可以簡化為return *s1-*s2,不過主函數(shù)里要相應(yīng)更改了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)模板進(jìn)階的多方面分析
今天我要給大家介紹C++中的模板更深的一些知識(shí)。有關(guān)于非類型的模板參數(shù)和模板特化的一些知識(shí),感興趣的朋友快來看看吧2022-02-02C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序
這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序,同時(shí)也包括編寫類的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下2015-09-09C語言中遞歸的實(shí)際應(yīng)用與經(jīng)典問題
函數(shù)以及函數(shù)的遞歸調(diào)用是學(xué)習(xí)C語言必須要掌握的內(nèi)容,且遞歸作為經(jīng)典的算法思想被廣泛應(yīng)用于程序設(shè)計(jì)中,下面這篇文章主要給大家介紹了關(guān)于C語言中遞歸的實(shí)際應(yīng)用與經(jīng)典問題的相關(guān)資料,需要的朋友可以參考下2021-09-09ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式
這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12M1 Macbook vscode C++ debug調(diào)試實(shí)現(xiàn)
本文主要介紹了M1 Macbook vscode C++ debug調(diào)試,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08