38.3 배열 형태의 문자열을 문자열 포인터에 복사하기
이번에는 배열 형태의 문자열을 문자열 포인터에 복사해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
string_copy_array_to_memory.c
#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지 #include <stdio.h> #include <string.h> // strcpy 함수가 선언된 헤더 파일 #include <stdlib.h> // malloc, free 함수가 선언된 헤더 파일 int main() { char s1[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 char *s2 = malloc(sizeof(char) * 10); // char 10개 크기만큼 동적 메모리 할당 strcpy(s2, s1); // s1의 문자열을 s2로 복사 printf("%s\n", s2); // Hello free(s2); // 동적 메모리 해제 return 0; }
실행 결과
Hello
먼저 malloc 함수로 s2에 메모리를 할당합니다. 당연히 할당할 메모리 공간은 복사될 문자열보다 커야 되겠죠? 여기서는 메모리 공간이 10 바이트이므로 Hello(5글자 + NULL 하나)는 충분히 들어갈 수 있습니다. 그리고 strcpy 함수로 s1의 문자열을 s2에 복사하면 됩니다.