介紹
memcpy是memory copy的縮寫,意為內存復制,在寫C語言程序的時候,我們常常會用到它。它的函原型如下:
void *memcpy(void *dest, const void *src, size_t n);
它的功能是從src的開始位置拷貝n個字節的數據到dest。如果dest存在數據,將會被覆蓋。memcpy函數的返回值是dest的指針。memcpy函數定義在string.h頭文件里。
例子
1.將一個字符串數據復制到一塊內存。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
int main(void)
{
char* target=(char*)malloc(sizeof(char)*N);
memcpy(target,"0123456789",sizeof(char)*N);
puts(target);
free(target);
return 0;
}
編譯,運行,將輸出:0123456789
2.將一個字符串數據復制到一塊內存的指定位置。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
int main(void)
{
char* target=(char*)malloc(sizeof(char));
for(int i=0;i<N;i++){
memcpy(target+i,"a",sizeof(char));
}
puts(target);
free(target);
return 0;
}
編譯,運行,將輸出:aaaaaaaaaa
3.數據覆蓋
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
int main(void)
{
char* target=(char*)malloc(sizeof(char)*N);
memcpy(target,"0123456789",sizeof(char)*N);
puts(target);
memcpy(target,"aaaaa",sizeof(char)*(N-5));
puts(target);
free(target);
return 0;
}
編譯,運行,將輸出:
0123456789
aaaaa56789
