English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس أساسية بلغة C

تحكم في عملية لغة C

الوظائف في لغة C

العدد في لغة C

المراجع في لغة C

الخطوط في لغة C

مباني لغة C

ملفات لغة C

C أخرى

دليل مرجعي للغة C

استخدام وظيفة memmove() ومثال

مكتبة القياسية C - <string.h>

وظيفة مكتبة C void *memmove(void *str1, const void *str2, size_t n) من str2 نسخ n حتى str1، ولكن فيما يتعلق بمناطق التخزين المتداخلة، memmove() هي طريقة أكثر أمانًا من memcpy(). إذا كانت منطقة الهدف ومنطقة المصدر متداخلة، فإن memmove() يمكن أن يضمن أن يتم نسخ بيانات منطقة التداخل إلى منطقة الهدف قبل أن يتم تغطيتها، ويتم تغيير محتويات منطقة المصدر بعد النسخ. إذا لم تكن منطقة الهدف ومنطقة المصدر متداخلة، فإن وظيفة 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);
}

لن نقوم بترميز وتشغيل البرنامج المذكور أعلاه، مما سيؤدي إلى نتائج التالي:

قبل memmove dest = oldstring، src = newstring
بعد memmove dest = newstring، src = newstring

مكتبة القياسية C - <string.h>