38.9 연습문제: 문자열 리터럴과 동적 메모리 붙이기

다음 소스 코드를 완성하여 "Alice in Wonderland"가 출력되게 만드시오.

practice_string_concatenate_pointer_to_memory.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char *s1 = " Wonderland";
    char *s2 = malloc(sizeof(char) * 30);

    ____________________

    ____________________

    printf("%s\n", s2);

    free(s2);

    return 0;
}

실행 결과

Alice in Wonderland

정답

 strcpy(s2, "Alice in");
 strcat(s2, s1);

해설

s2는 메모리만 할당했으므로 문자열이 들어있지 않습니다. 따라서 strcpy 함수로 s2"Alice in"을 복사합니다. 그리고 strcat 함수로 s1의 문자열을 s2 뒤에 붙이면 printf 함수에서 "Alice in Wonderland"가 출력됩니다.