1. 程式人生 > >string.h庫函式的實現---memcpy

string.h庫函式的實現---memcpy

作用:從source的位置開始向後複製num個位元組的資料到destination的記憶體位置。

注意: 1.這個函式在遇到’\0’的時候不會停下來。 2.如果source和destination有任何重疊,複製的結果都是未定義的。

實現機制:因為這個函式使用了void* 所以不能夠解引用複製,所以應該先進行對指標的強轉操作()。使用迴圈對源字串的每一個字元進行復制到目標字元陣列中,返回目標字串的首地址。

函式實現

const void* my_memcpy(void* dest, const void* src,size_t num)
{
	assert(dest != NULL &&
src != NULL); void* ret = dest; for (size_t i = 0; i < num; ++i) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src = (char*)src + 1; } return ret; }

參考程式碼

#include <stdio.h>
#include <assert.h>

const void* my_memcpy(void* dest, const void* src,size_t num)
{
	assert
(dest != NULL && src != NULL); void* ret = dest; for (size_t i = 0; i < num; ++i) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src = (char*)src + 1; } return ret; } int main() { char arr1[10] = "abcde"; char arr2[10] = { 0 }; my_memcpy(arr2,arr1,sizeof(arr1)); printf(
"%s\n",arr2); return 0; }

執行結果展示

在這裡插入圖片描述