C語言三個函數(shù)的模擬實現(xiàn)詳解
更新時間:2022年03月23日 09:50:55 作者:WangLongxyd
這篇文章主要為大家詳細介紹了C語言三個函數(shù)的模擬實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
一、strcpy
//模擬實現(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;
}
二、模擬實現(xiàn)strcat
思路:先找到目標字符串的\0位置,然后停下
用兩個指針掃描目標字符串和源字符串,并賦值
在源字符串添加完成后,加上’\0‘
//模擬實現(xiàn)strcat
//字符串追加
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* str)
{
assert(dest && str);
char* tmp = dest;
//找到目標的尾巴
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碼值
//模擬實現(xiàn)strcmp 返回的不是1 -1,而是正數(shù),負數(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é):
多多實現(xiàn)庫函數(shù)的模擬可以更好地認識指針。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法
本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
優(yōu)先隊列(priority_queue)的C語言實現(xiàn)代碼
本文簡要介紹一種基于數(shù)組二叉堆實現(xiàn)的優(yōu)先隊列,定義的數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)的函數(shù)接口說明如下2013-10-10

