36.6 연습문제: 입력받은 문자열을 동적 메모리에 저장하기

다음 소스 코드를 완성하여 표준 입력으로 입력받은 문자열이 그대로 출력되게 만드세요.

practice_scanf_string_pointer_memory.c

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

int main()
{
    ______________________

    printf("문자열을 입력하세요: ");
    ______________________

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

    free(s1);

    return 0;
}

실행 결과

문자열을 입력하세요: Hello (입력)
Hello

정답

 char *s1 = malloc(sizeof(char) * 10);
 scanf("%s", s1);

해설

소스 코드에 free 함수가 있으므로 메모리를 할당한 문자열 포인터입니다. 따라서 malloc 함수로 메모리를 할당해주고 scanf 함수로 입력을 받습니다. 그리고 scanf 함수에 포인터를 넣을 때는 &를 붙이지 않습니다.