본문으로 바로가기
728x90
반응형
memcpy 함수의 헤더 파일
#include <string.h>

 

memcpy() 함수의 원형
void * memcpy(void * des, const void * src, size_t num);

 

Parameter
des
데이터를 복사할 주소이고 void * 형으로 변환되어서 전달된다.
주소를 전달해주면 된다.

src
복사할 데이터가 존재하는 위치의 주소이고 void * 형으로 변환되어서 전달된다.
주소를 전달해주면 된다.

num
복사할 데이터의 byte 수이며 size_t 형으로 전달해주면 된다.

 

리턴값
des 주소가 void * 형으로 리턴된다.

 

memcpy함수는 가장 많이 사용되는 함수 중에 하나이죠.

 

src에서 num byte 만큼을 복사하여 des에 복사해주는 함수입니다.

string의 마지막에 null 값을 확인하여 전송하는 것이 아니라 단순히 num byte 만큼 전송하기 때문에 des / src의 크기에 대해 유의해주셔야 됩니다.

 

한번 memcpy 함수를 사용해볼까요~?

 

str 에서 buffer로 hello world!!를 복사를 해보죠.

#include <stdio.h>
#include <string.h>

int main(){
  char str[] = "hello world!!";
  char buffer[20];

  memset(buffer, 0, 20);			//buffer를 0으로 초기화
  memcpy(buffer, str, strlen(str));		// buffer에 str을 str 길이만큼 복사

  printf("*************************\n");

  printf("str addr : %x\n", str);
  printf("buffer addr : %x\n", buffer);

  printf("str: [%s]\n", str);
  printf("buffer: [%s]\n", buffer);
  printf("*************************\n");

  return 0;
}
~           

 

실행 결과

str, buffer이 다른 주소에 있으며 str 에서 buffer로 복사가 잘 되었음을 확인할 수 있습니다.

 

 

다른 string.h 파일의 함수에 대해 알고 싶으시다면 String.h 함수 파헤치기!!

 

C언어 라이브러리 - String.h 헤더 파일 분석하기(String.h 함수 모음)

c언어를 사용하시거나 해보셨던 분들은 대부분 memcpy, memset 함수를 사용해보셨을 텐데요. 해당 함수를 사용하기 위해서는 String.h 파일을 포함시켜줬던 기억이 나실겁니다. 요렇게요 #include #include

idsn.tistory.com

 

반응형