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"이 출력됩니다.