닌자고양이
[C/C++] 콘솔 입력 버퍼 비우기 (개행문자 제거) 본문
scanf() 사용시 엔터까지 입력을 한 경우 입력 버퍼에서 마지막 개행문자 '\n' 는 비우지 않는다.
그래서 이후에 문자나, 문자열을 읽으려 할때 개행문자 또는 빈문자열만 들어오는 일을 겪는다.
이 문제를 해결하려면 입력 버퍼에서 개행 문자 '\n' 를 비워주어야 한다.
// 후속 scanf 에서 이전 개행 문자를 제거하면서 입력 받기
scanf("%d", &d);
scanf("\n%c", &c); // \n, \t, 공백 등 사용 가능
// 개행 문자까지 한번 비우기 (getchar 사용)
while(getchar() != '\n');
// 개행 문자까지 한번 비우기 (scanf 사용)
scanf("%*[^\n]");
scanf("%*c");
// 연속된 모든 개행 문자 비우기 (C++)
cin.ignore(INT_MAX, '\n');
// 개행 문자까지만이 아닌 입력 버퍼 모두를 비우는 방법 (윈도우등 일부 OS 만 지원)
rewind(stdin);
//또는
fseek(stdin, 0, 0);
'C C++' 카테고리의 다른 글
[C/C++] ctrl+c 감지하기 (0) | 2019.12.03 |
---|---|
[C/C++] 369 (0) | 2019.10.31 |
[C/C++] 소수 구하기 - 에라토스테네스의 체 (0) | 2019.10.28 |
[C/C++] 정수를 문자열로 변환 (진수 변환 포함) (0) | 2019.10.27 |
[C/C++] 피보나치 수열 (0) | 2019.10.17 |
Comments