개념 :
memcpy_s 와 매우 흡사하나 원하는 구역을 복사해서 옴긴다는 개념입니다.
예제의 코드에서 memcpy_s 부분을 memmove_s 함수 이름을 바꿔줘도 결과는
동일합니다. 가독성에 맞게 사용하는것을 권장합니다.
소스코드 : main.c
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main(void)
{
char *pString = "Hello JunmoZzi";
char *pAdd = " ^^a ha ha ha!";
char *pBuffer = NULL;
int nSize1 = strlen(pString) + 1;
int nSize2 = strlen(pAdd) + 1;
pBuffer = calloc(nSize1 + 1, sizeof(char));
if (pBuffer == NULL)
{
puts("memory 할당 실패");
}
else
{
puts("memory 할당 성공");
printf("메모리 주소 : %d\n", pBuffer);
//strcpy_s(pBuffer, nSize1, pString);
memmove_s(pBuffer, nSize1, pString, nSize1);
}
puts("Run memcmp : pBuffer, pStirng");
if (memcmp(pBuffer, pString, nSize1) == 0)
{
puts("동일한 메모리");
}
else
{
puts("동일하지 않는 메모리");
}
puts(pBuffer);
puts("메모리 재 할당");
realloc(pBuffer, nSize1 + nSize2);
pBuffer[nSize1 - 1] = ' ';// 문자열의 끝 \0을 공백으로 변경
//strcat_s(pBuffer, nSize1+nSize2, pAdd);
memmove_s(pBuffer + nSize1, nSize2, pAdd, nSize2);
printf("메모리 주소 : %d\n", pBuffer);
puts(pBuffer);
free(pBuffer);
pBuffer = NULL;
return 0;
}
결과 :
#c언어, #c언어입문, #프로그램입문, #memmove_s
c언어, c언어입문, 프로그램입문 ,memmove_s
'Programing - C > C Basic grammar ' 카테고리의 다른 글
097 포인터 개념 (0) | 2017.08.04 |
---|---|
096 memset (0) | 2017.08.04 |
094 memcmp 두메모리 비교 (0) | 2017.07.28 |
093 memcpy_s 메모리 복사 (0) | 2017.07.28 |
092 realloc 메모리 재할당 (0) | 2017.07.28 |