38.7 연습문제: 문자열 포인터를 동적 메모리에 복사하기
다음 소스 코드를 완성하여 "The Little Prince"가 출력되게 만드세요.
practice_string_pointer_to_memory.c
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *s1 = "The Little Prince"; char *s2 = ①______________________ ②__________________________ printf("%s\n", s2); free(s2); return 0; }
실행 결과
The Little Prince
정답
① malloc(sizeof(char) * 20); ② strcpy(s2, s1);
해설
free(s2);와 같이 메모리를 해제하고 있으므로 s2는 메모리가 할당된 포인터입니다. 따라서 malloc 함수로 s2에 메모리를 할당합니다. 그리고 strcpy 함수로 s1의 문자열을 s2로 복사하면 printf 함수에서 "The Little Prince"이 출력됩니다.