不呼叫庫函式,模擬實現幾個標準庫函式

2021-08-26 05:40:28 字數 2356 閱讀 6402

原型宣告:char *strcpy(char* dest, const char *src);

標頭檔案:#include 和 #include

功能:把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串,返回指向dest的指標。

**如下

char *my_strcpy(char *dest, const char*src)

return ret;

}

原型宣告:extern char *strcat(char *dest, const char *src);

標頭檔案:#include

功能:把src所指向的字串(包括「\0」)複製到dest所指向的字串後面(刪除*dest原來末尾的「\0」)。要保證*dest足夠長,以容納被複製進來的*src。*src中原有的字元不變。返回指向dest的指標。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

**如下

char *my_strcat(char *dest, const char*src)

while ((*dest++ = *src++))

return ret;

}

原型宣告externchar*strstr(char*str1,constchar*str2);

標頭檔案:#include

功能:strstr(str1,str2) 函式用於判斷字串str2是否是str1的子串。如果是,則該函式返回str2在str1中首次出現的位址;否則,返回null。

**如下

char *my_strstr(const char* str1, const char* str2)

while (*cp)

if (*substr == '\0')

return cp;

cp++;

}}

原型宣告externintstrcmp(constchar*s1,constchar*s2);

標頭檔案:#include

功能:c/c++函式,比較兩個字串設這兩個字串為str1,str2,若str1==str2,則返回零;若str1str2,則返回正數。

**如下

int my_strcmp(const char * src, const char * dst)

原型宣告:void *memcpy(void *dest, const void *src, size_t n);

標頭檔案:#include

**如下

void * my_memcpy(void * dst, const void * src, size_t count)

return(ret);

}

原型:void *memmove( void* dest, const void* src, size_t count );

標頭檔案

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。

**如下

void *my_memmove(void *dest, const void *src, int n)

} else }

return dest;

}

模擬實現庫函式 printf

上次在部落格中提到過可變引數列表的使用,今天我再次使用可變引數列表來模擬實現庫函式printf。實現 如下 如有不理解的地方請檢視可變引數列表那篇部落格 include includevoid my printf const char format,break case s break defaul...

Mem庫函式模擬實現

本篇檢視 1 memset 2 memcpy 3 memmove 4 memcmp 5 memchr memset 功能 將一段記憶體初始化為某個值 函式拷貝ch 到buffer 從頭開始的count 個字元裡,並返回buffer指標。函式原型 void memset void buffer,int...

模擬實現庫函式strcpy

自己動手實現庫函式strcpy的功能 定義兩個指標,指標dest指向需要進行拷貝的字串,指標src指向被拷貝的字串。如果指標src指向的內容不是 0 把src所指的內容賦給dest所指的內容。然後把src和dest都加1。函式名為my strcpy,返回值為char 兩個引數,分別為字元指標dest...