【기 능】 특정(복사 대상) 메모리 블럭의 데이터를 지정 메모리 블럭으로 n바이트 복사
【소 속】 string.h
#include <string.h>
【서 식】
void *memcpy(void *src, const void *tar, size_t n);
【설 명】
tar(메모리 블럭)의 선두 번지로 부터 n바이트분의 데이터를 src(메모리 블럭)에 복사한다.
그런데, strcpy()하고는 달리 tar의 마지막에 공백문자(‘\0’)를 추가하지 않는다.
또, src를 단순하게 메모리 블록으로 처리하기 때문에, 데이터 도중에 공백문자(‘\0’)가 포함되어
있어도 무시하고 지정문자수만큼 복사한다.
tar와 src의 어드레스가 겹칠때는 복사실패로 끝난다. 이럴경우엔, memmove()를 사용하면 올바르게 복사가 된다.
【인 수】
void *tar : 복사되어 받을 메모리 블록
const void *src : 복사대상(복사 되는) 메모리 불록
size_t n : 복사할 바이트 수
【리턴 값】
tar의 값
【사용 예】
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[128] = {1,1,1,1,1,1,1};
char str2[] = "ab\0cde"; /* 도중에 공백문자가 있는 문자열 */
int i;
printf("복사 실시 전 데이터 확인\n");
for (i=0; i<7; i++)
printf("%#x ",str1[i]);
printf("\n");
memcpy(str1, str2, 5);
printf("복사 실시 후 데이터 확인\n");
for (i=0; i<7; i++)
printf("%#x ",str1[i]);
printf("\n");
return 0;
}
【실행결과】
복사 실시 전 데이터 확인
0x1 0x1 0x1 0x1 0x1 0x1 0x1
복사 실시 후 데이터 확인
0x61 0x62 0 0x63 0x64 0x1 0x1
※ 도중에 공백문자 '\0' 가 있어도 복사 된다.
또, 마지막에 공백문자 '\0' 를 추가 하지 않는다.