C 庫函數 - memmove()

C 標準庫 - <string.h> C 標準庫 - <string.h>

描述

C 庫函數 void *memmove(void *str1, const void *str2, size_t n)str2 複製 n 個字元到 str1,但是在重疊記憶體塊這方面,memmove() 是比 memcpy() 更安全的方法。如果目標區域和源區域有重疊的話,memmove() 能夠保證源串在被覆蓋之前將重疊區域的位元組拷貝到目標區域中,複製後源區域的內容會被更改。如果目標區域與源區域沒有重疊,則和 memcpy() 函數功能相同。

聲明

下麵是 memmove() 函數的聲明。

void *memmove(void *str1, const void *str2, size_t n)

參數

  • str1 -- 指向用於存儲複製內容的目標數組,類型強制轉換為 void* 指針。
  • str2 -- 指向要複製的數據源,類型強制轉換為 void* 指針。
  • n -- 要被複製的位元組數。

返回值

該函數返回一個指向目標存儲區 str1 的指針。

實例

下麵的實例演示了 memmove() 函數的用法。

#include <stdio.h>
#include <string.h>

int main ()
{
   const char dest[] = "oldstring";
   const char src[]  = "newstring";

   printf("Before memmove dest = %s, src = %s\n", dest, src);
   memmove(dest, src, 9);
   printf("After memmove dest = %s, src = %s\n", dest, src);

   return(0);
}

讓我們編譯並運行上面的程式,這將產生以下結果:

Before memmove dest = oldstring, src = newstring
After memmove dest = newstring, src = newstring

C 標準庫 - <string.h> C 標準庫 - <string.h>