C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기

  • 2 minutes to read

scanf() 함수를 사용하여 엔터키를 기준으로 여러 행으로 데이터를 입력받을 때, 엔터키가 다음 행에 영향을 주는 경우가 있습니다. 단순히 Windows 환경에서만 사용한다면 fflush(stdin); 코드를 scanf() 함수 사용 다음 라인에 넣어주던 방식도 있었는데요. 이것은 리눅스에서는 실행되지 않습니다. 그래서 여러 가지 해결책이 있는데요. 그 중에서 하나는 scanf() 함수의 서식 지정자 앞에 공백 한 칸을 두어 공백과 엔터를 무시한 문자열만 입력을 받을 수 있도록 할 수 있습니다.

강의

https://youtu.be/BPFJlsAF7bM

코드: scanf_multi_line.c

// scanf_multi_line.c
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지 
#include <stdio.h>

int main(void)
{
    char name[20];
    int age;
    char nick[20];
    int _;

    printf("입력\n----\n");
    printf("이름: "); _ = scanf(" %s", name); // 서식 지정자 앞에 공백 하나 추가 
    printf("나이: "); _ = scanf(" %d", &age);
    printf("별명: "); _ = scanf(" %s", nick);

    printf("\n출력\n----\n");
    printf("이름: %s\n", name);
    printf("나이: %d\n", age);
    printf("별명: %s\n", nick);

    return 0;
}
입력
----
이름: 박용준
나이: 21
별명: 레드플러스

출력
----
이름: 박용준
나이: 21
별명: 레드플러스
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com