Latest web development tutorials

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>