相關(guān)函數(shù): bcopy(), memccpy(), memcpy(), strcpy(), strncpy()
表頭文件: #include <string.h>
定義函數(shù): void *memmove(void *dest, const void *src, size_t n);
函數(shù)說明: memmove()與memcpy()一樣都是用來拷貝src所指的內(nèi)存內(nèi)容前n個字節(jié)到dest所指的地址上。不同的是,當(dāng)src和dest所指的內(nèi)存區(qū)域重疊時,memmove()仍然可以正確的處理,不過執(zhí)行效率上會比使用memcpy()略慢些。
返回值: 返回指向dest的指針。
附加說明: 指針src和dest所指的內(nèi)存區(qū)域可以重疊。
memcpy()、 memmove()和memccpy()
-------------------------------------------------------
這三個函數(shù)的功能均是將某個內(nèi)存塊復(fù)制到另一個內(nèi)存塊。前兩個函數(shù)的區(qū)別在于它們處理內(nèi)存區(qū)域重疊(overlapping)的方式不同。第三三個函數(shù)的功能也是復(fù)制內(nèi)存,但是如果遇到某個特定值時立即停止復(fù)制。
對于庫函數(shù)來說,由于沒有辦法知道傳遞給他的內(nèi)存區(qū)域的情況,所以應(yīng)該使用memmove()函數(shù)。通過這個函數(shù),可以保證不會出現(xiàn)任何內(nèi)存塊重疊問題。而對于應(yīng)用程序來說,因為代碼“知道”兩個內(nèi)存塊不會重疊,所以可以安全地使用memcpy()函數(shù)。
-------------------------------------------------------
#include <string.h>
#include <stdio.h>
int main()
{
char s[] = "zengxiaolong";
memmove(s, s+4, strlen(s)-4);
s[strlen(s)-4] = '\0';
printf("*s = %s\n", s);
return 0;
}
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/msda/archive/2007/09/03/1770218.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。