Hàm memcpy() copy khối bộ nhớ từ nguồn (source) đến đích (destination). Không kiểm tra trùng lặp (overlap) – hành vi không xác định nếu overlap. Khai báo trong <string.h>.
Cú pháp
void *memcpy(void *dest, const void *src, size_t n);
Tham số: dest – đích; src – nguồn; n – số byte copy. Trả về dest.
Ví dụ
#include <stdio.h>
#include <string.h>
int main() {
char a[] = "Firststring";
const char b[] = "Secondstring";
memcpy(a, b, 5); // Copy 5 byte dau tu b sang a
printf("Mang moi: %s\t%s", a, b);
return 0;
}
Kết quả
Mang moi: Seconstring Secondstring
Giải thích: Copy 5 byte đầu của b ("Secon") đè lên a. a thành "Seconstring". b không đổi.
Cảnh báo quan trọng: Nếu
src và dest overlap (ví dụ copy trong cùng mảng), memcpy hành vi undefined. Phải dùng memmove() cho trường hợp overlap.