Hàm memmove copy n byte từ src vào vùng nhớ mới dest

void *memmove(void *dest, const void *src, size_t count);

Parameter:

dest: vùng nhớ mới chứa số byte copy từ src (kiểu int, long, char,…)

drc: vùng nhớ chứa dữ liệu cần copy

count: số byte cần copy

Remark:

Hàm memmove( ) copy count byte từ src vào vùng nhớ mới dest. Nếu vùng nhớ dest và src bị chồng lên nhau (overlap) thì hàm memmove( ) sẽ đảm bảo các byte trong vùng chồng lấn sẽ được copy trước khi ghi đè xuống. Nói một cách đơn giản tức là hàm memove( ) sẽ đảm bảo việc xử lí là chính xác không như hàm memcpy( ).

Chú ý: kích thước vùng nhớ phải lớn hơn hoặc bằng kích thước của src.

Ví dụ:

#include "stdio.h"
#include "conio.h"
#include "string.h"

char str1[] = "aabbcc";

void main( void )
{
    printf( "The string: %s\n", str1 );
    memcpy( str1 + 2, str1, 4 );
    printf( "New string: %s\n", str1 );

    strcpy_s( str1, sizeof(str1), "aabbcc" ); // reset string

    printf( "The string: %s\n", str1 );
    memmove(str1 + 2, str1, 4 );
    printf( "New string: %s\n", str1 );

    getch();
}

Kết quả:

Hàm memmove copy n byte từ vùng nhớ nguồn vào vùng nhớ đích
Hàm memmove copy n byte từ vùng nhớ nguồn vào vùng nhớ đích

Be the first to comment

Leave a Reply