關於三個copy庫函式

2021-08-31 11:57:29 字數 984 閱讀 6221

strcpy strncpy memcpy

char *strcpy( char *strdestination,const char *strsource );
strcpy函式從引數中可以看出,僅僅適用於字串,眾所周知字串是以\0結尾,因此源字串必須以\0結束,此函式會將\0拷入目標字串中;如果dst空間小於str源空間?

原理如下:定義兩個指標,分別指向目標空間的第乙個位置和源字串的第乙個字元,將源字元賦值給目標空間,兩個指標依次指向下乙個,再賦值,直到源字串上指標指到\0,賦值給目標空間,拷貝結束;

char* strcpy(char* arr1,const char* arr2)

char *strncpy( char *strdest, const char *strsource,size_t count );
拷貝n個字元從源字串到目標空間;

如果源字串長度小於n,則剩餘位置補0;

char* my_strncpy(char *dest, const char *str, size_t count)

return ret;

} }return ret;

}

void *memcpy( void *dest,const void *src,size_t count );
memcpy函式從src位置向後賦值count個位元組的資料到dest的記憶體位置;

明顯遇到\0不會停下來;

如果記憶體重疊則可能會出現與理想不同的結果;

如果源空間和目標空間出現重疊,需使用memmove函式;

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

return ret;

}

關於三個作者

因歷史原因,本blog專欄名字叫做fudan abc,但時過境遷,如今blog維護者已不僅僅是復旦人,一名交大才子加入了這支革命隊伍.昨天 兩個曾經的復旦人,復旦人甲和復旦人乙.今天 兩個曾經的復旦人,復旦人甲和復旦人乙.乙個曾經的交大人,交大人甲.復旦人甲目前主要寫uhci驅動的分析.分析的是2....

關於main函式的三個引數

每一c 程式都必須有一main 函式,可以根據自己的愛好把它放在程式的某 個地方。有些程式設計師把它放在最前面,而另一些程式設計師把它放在最後面,無論放 在哪個地方,以下幾點說明都是適合的。1.main 引數 在turbo c2.0啟動過程中,傳遞main 函式三個引數 argc,argv和env。...

關於copy建構函式

copy建構函式是乙個極其重要的函式,因為它定義乙個物件如何通過pass by value 以值傳遞 舉個例子,考慮以下 bool hasacceptablequality widget w widget awidget if hasacceptablequality awidget 引數w是以by...