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