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
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 memchr 함수 메모리에서 문자 검색 (0) | 2020.03.12 |
---|---|
C언어 memcpy 함수 메모리 영역 복사 (0) | 2020.03.12 |
C언어 realloc 함수 동적 메모리 크기 변경 (0) | 2020.03.12 |