[program] memmove

development 2011. 10. 27. 14:40
memmove 

memmove() 은 src 에서 target 으로 메모리를 복사하는 함수입니다. 
이름만 보면 memcpy 와 다른 무언가가 있을 것 같은데 실제 동작 결과는 별다를 것이 없습니다.  

함수원형

#include <string.h>

void *memmove(const char *dest, const void *src, size_t n);

보시다시피 memcpy() 의 원형과 동일하게 생겼습니다. 

다시 설명하면
 

  const char *dest => 타겟 버퍼
  const void *src => 소스 버퍼
  size_t n => 복사할 길이

 

1. 가장 기본적인 사용예제

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

#define BUF_SIZE 128

static void prt_hex(char *buf,
                        int size)
{
  int i = 0;
  
  for( i = 0; i < BUF_SIZE; ++i ){
    if( (i % 16) ){
      printf("%c ", buf[i-1]);
    }else{
      printf("%c\n", buf[i-1]);
    }
  }
  
  printf("\n")


int main(int argc, char *argv[])
{
  char *dst;
  char *src;
  void *tmp;

  dst = (char *)malloc(BUF_SIZE);
  src = (char *)malloc(BUF_SIZE/10);

  memset(dst, 'a', BUF_SIZE);
  memset(src, '-', BUF_SIZE/10);
 
  printf("=================================\n");
  printf("Before memory status [ dst, src ]\n");
  printf("=================================\n");
  printf("(dst dump)\n");
  prt_hex(dst, BUF_SIZE);
  printf("(src dump)\n");
  prt_hex(src, BUF_SIZE/10);
  printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
  printf("\n\n");

  printf("=================================\n");
  printf("After memory status [ dst, src ]\n")
  printf("=================================\n")
  tmp = memmove(dst + BUF_SIZE/10, src, BUF_SIZE/10);
  printf("(dst dump)\n");
  prt_hex(dst, BUF_SIZE);
  printf("(src dump)\n");
  prt_hex(src, BUF_SIZE/10);
  printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
  printf("\n\n");

  return 0;
}

memmove.c



블로그 이미지

김유석0

,