본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 memmove 함수 메모리 영역 복사, 자기 영역도 가능

C언어 memmove 함수 메모리 영역 복사, 자기 영역도 가능

· 댓글개 · 바다야크

C memmove() 메모리 영역 복사, 자기 영역도 가능 함수

C언어 메모리 관련 함수 memmove()는 메모리 영역을 복사합니다.

  • 헤더: string.h
  • 형태: void *memmove(void *s1, const void *s2, size_t n)
  • 인수: void *s1 복사될 메모리의 포인터
    void *s2 복사할 메모리의 포인터
    size_t size 복사할 바이트 갯 수
  • 반환: void * s1 포인터를 반환하며 실패하면 NULL을 반환한다.

C언어 메모리 관련 함수 memmove()는 memcpy()처럼 메모리 영역을 복사합니다. 차이 점은 하나의 포인터에 대해서 동일한 영역 내에서 복사가 가능합니다. 예를 들어서 아래와 같이 메모리의 포인터 내용을 복사할 수 있습니다.

ptr에 "12345678901234567www.badayak.com"이 들어 있을 때,

ptr = "12345678901234567www.badayak.com"

이와 같이 내부 메모리로 자기 자신의 메모리에 복사할 수 있습니다.

ptr = "www.badayak.comwww.badayak.com"

C언어 memmove() 함수 예제

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

int main( void)
{
   char  ptr[] = "badayak.com";
   char  tmp;
   int   ndx;

   for ( ndx = 0; ndx <= strlen(ptr); ndx++)
   {
      printf( "%s\n", ptr);              // 현재의 ptr 출력

      tmp   = ptr[0];                    // ptr의 첫번째 문자
      memmove( ptr, ptr+1, strlen(ptr)); // 2번째문자부터 끝문자까지 복사
      ptr[strlen(ptr)] =  tmp;           // ptr 끝에 보관해둔 첫번째 문자
   }
   return 0;
}

C언어 memmove() 예제 실행 결과

]$ ./a.out
badayak.com
adayak.comb
dayak.comba
ayak.combad
yak.combada
ak.combaday
k.combadaya
.combadayak
combadayak.
ombadayak.c
mbadayak.co
badayak.com
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.