المتغيرات
فضاءات التسمية
أفعال

memcpy

من cppreference.com
< c‏ | string‏ | byte
معرفة في ملف <string.h>
void* memcpy( void          *dest, const void          *src, size_t count );
(حتى C99)
void* memcpy( void *restrict dest, const void *restrict src, size_t count );
(منذ C99)

تقوم بنسخ عدد ‎count‎ من الحروف من الكائن المشار إليه بـ ‎src‎ إلى الكائن المشار اليه بـ ‎dest‎. في حالة وجود تداخل بين موقع الكائنين في الذاكرة يكون السلوك غير معرف.

محتويات

[تعديل] معطيات

dest - مؤشر على الموقع في الذاكرة الذي سيتم النسخ إليه
src - مؤشر على الموقع في الذاكرة الذي سيتم النسخ منه
count - عدد البايت التي سيتم نسخها

[تعديل] القيمة المُرجعة

‎dest‎

[تعديل] مثال

#include <stdio.h>
#include <string.h>
 
#define LENGTH_STRING 20
 
int main(void)
{
    char source[LENGTH_STRING] = "Hello, world!";
    char target[LENGTH_STRING] = "";
    int integer[LENGTH_STRING / sizeof(int)] = {0};
    printf("source: %s\n", source);
    printf("target: %s\n", target);
    printf("integer: ");
    for (unsigned i = 0; i < sizeof(integer) / sizeof(integer[0]); ++i) {
        printf("%x ", integer[i]);
    }
    printf("\n========\n");
    memcpy(target, source, sizeof source);
    memcpy(integer, source, sizeof source);
    printf("source: %s\ntarget: %s\n", source, target);
    printf("source(hex): ");
    for (unsigned i = 0; i < sizeof(source) / sizeof(source[0]); ++i) {
        printf("%02x ", source[i]);
    }
    printf("\n");
    printf("integer(hex: %s-endian): ", integer[0] == 0x48656c6c ? "big" : "little");
    for (unsigned i = 0; i < sizeof(integer) / sizeof(integer[0]); ++i) {
        printf("%08x ", integer[i]);
    }
    printf("\n");
}

خرج ممكن:

source: Hello, world!
target: 
integer: 0 0 0 0 0 
========
source: Hello, world!
target: Hello, world!
source(hex): 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 00 00 00 00 00 00 00 
integer(hex: big-endian): 48656c6c 6f2c2077 6f726c64 21000000 00000000

[تعديل] أنظر أيضا

تنقل محتوى مصفوفة إلى مصفوفة أخرى
(دالة) [edit]