36.7 연습문제: 문자열 세 개 입력받기

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

practice_scanf_three_string_pointer_memory.c

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

int main()
{
    char *s1 = malloc(sizeof(char) * 10);
    char *s2 = malloc(sizeof(char) * 10);
    char *s3 = malloc(sizeof(char) * 10);

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

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

    free(s1);
    free(s2);
    free(s3);

    return 0;
}

실행 결과

문자열을 세 개 입력하세요: Beethoven 9th symphony(입력)
Beethoven
9th
symphony

정답

scanf("%s %s %s", s1, s2, s3);

해설

문자열을 여러 개 입력받으려면 scanf 함수의 서식 부분에 %s를 여러 개 지정합니다. 여기서는 문자열을 세 개 입력받으므로 "%s %s %s"처럼 지정하고, 각 문자열을 저장할 문자열 포인터 세 개를 넣어줍니다. 특히 s1, s2, s3은 포인터이므로 &를 붙이지 않고 그대로 넣습니다.