實現(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; }
但考慮到安全性,因為求長度并不會改變源字符串,所以加上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'; }
先遍歷跑完目的字符串,接著再將原字符串所指的值一一賦給目的字符串.而因為是把原接在目的字符串后,所以目的字符串要足夠大
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ù)里要相應更改了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
C++數(shù)據(jù)結(jié)構(gòu)模板進階的多方面分析
今天我要給大家介紹C++中的模板更深的一些知識。有關于非類型的模板參數(shù)和模板特化的一些知識,感興趣的朋友快來看看吧2022-02-02ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式
這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12M1 Macbook vscode C++ debug調(diào)試實現(xiàn)
本文主要介紹了M1 Macbook vscode C++ debug調(diào)試,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08