2016년 2월 23일 화요일

C언어 메모리 조작 함수 : memcpy, memmove

메모리 조작 함수 memcpy, memmove 는 strcpy와 흡사 하다.

헤더는 include<memmory.h> or string.h 이다.

memcpy(복사될 문자열 B+시작할 주소, 복사할 문자열 A+시작할 주소, 복사될 메모리의 크기)
memmove(이동될 문자열 B+시작할 주소,이동할 문자열 B+시작할 주소, 이동 메모리의 크기)

결과적으로 memcpy, memmove는 문자열을 복사한다는 면에서 같다.

#include<stdio.h>
#include<string.h>
int main()
{
 char A[] = "I love her";
 char B[] = "I feel you";
 int C[] = {1,2,3,4,5};
 int D[] = {6,7,8,9,10,11};
 int i;

 printf("원래 문장 A : %s \n",A);
 printf("원래 문장 B : %s \n",B);
 printf("원래 문장 C :");
 for(i=0;i<5;i++)
 {
  printf("%d ",C[i]);
 }
 printf("\n");
 printf("원래 문장 D :");
 for(i=0;i<6;i++)
 {
  printf("%d ", D[i]);
 }
 printf("\n");


 memcpy(B+7,A+7,3);
 memmove(D,C,sizeof(int)*5);       //D[1]과 C[3]을 하고 싶다면 &D[1],&C[3],4 를 하면 된다.

 printf("바뀐 후 A : %s \n",A);
 printf("바뀐 후 B : %s \n",B);
 printf("바뀐 후 C :");
 for(i=0;i<5;i++)
 {
  printf("%d ",C[i]);
 }
 printf("\n");
 printf("바뀐 후 D :");
 for(i=0;i<6;i++)
 {
  printf("%d ", D[i]);
 }
 printf("\n");
}

아래 그림처럼  A[7] 부터 3개가 B[7] 부분으로 복사 되었고
C를 D에 이동시켰다.
이렇게 결과는 둘이 같다.



댓글 없음:

댓글 쓰기