C語言三個(gè)函數(shù)的模擬實(shí)現(xiàn)詳解
一、strcpy
//模擬實(shí)現(xiàn)strcpy #include<stdio.h> #include<assert.h> char* my_strcpy(char*dest, char*str) { assert(dest && str); char* tmp = dest; while (*str != '\0') { *dest = *str; dest++; str++; } *dest = '\0'; return tmp; } int main() { char arr1[20] = "xxxxxxxxxxxxxxx"; char arr2[] = "study hard!"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }
二、模擬實(shí)現(xiàn)strcat
思路:先找到目標(biāo)字符串的\0位置,然后停下
用兩個(gè)指針掃描目標(biāo)字符串和源字符串,并賦值
在源字符串添加完成后,加上’\0‘
//模擬實(shí)現(xiàn)strcat //字符串追加 #include<stdio.h> #include<assert.h> char* my_strcat(char* dest, const char* str) { assert(dest && str); char* tmp = dest; //找到目標(biāo)的尾巴 while (*dest != '\0') { dest++; } //鏈接字符串 while (*dest++ = *str++) { ; } *dest = '\0'; return tmp; } int main() { char arr1[20] = "hello"; char arr2[] = " world!"; my_strcat(arr1, arr2); printf("%s\n", arr1); return 0; }
三、strcmp
要注意,strcmp不是比較兩字符串的長度,而是逐位比較字符的ASCII碼值
//模擬實(shí)現(xiàn)strcmp 返回的不是1 -1,而是正數(shù),負(fù)數(shù) #include<stdio.h> #include<assert.h> int my_strcmp(const char* str1, const char* str2) { assert(str1&&str2); while (*str1 == *str2) { if (*str1 == '\0') { return 0; } str1++; str2++; } return *str1 - *str2; } int main() { char arr1[] = "abcdef"; char arr2[] = "abcder"; int ret=my_strcmp(arr1, arr2); if (ret < 0) { printf("<\n"); } else if (ret == 0) { printf("=\n"); } else { printf(">\n"); } return 0; }
總結(jié):
多多實(shí)現(xiàn)庫函數(shù)的模擬可以更好地認(rèn)識指針。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
linux下C語言中的mkdir函數(shù)與rmdir函數(shù)
以下是對C語言中的mkdir函數(shù)與rmdir函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08Qt 使用 canon edsdk 實(shí)現(xiàn)實(shí)時(shí)預(yù)覽的示例代碼
這篇文章主要介紹了Qt 使用 canon edsdk 實(shí)現(xiàn)實(shí)時(shí)預(yù)覽的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11深入理解C++模板如何實(shí)現(xiàn)多態(tài)思想
這篇文章主要為大家詳細(xì)介紹了C++模板如何實(shí)現(xiàn)多態(tài)的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們深入了解C++有一定的幫助,感興趣的可以了解一下2023-03-03一篇文章帶你入門C語言數(shù)據(jù)結(jié)構(gòu):緒論
這篇文章主要介紹了C語言的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績,需要的朋友可以參考下,希望能給你帶來幫助2021-08-08C語言實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換器
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01