닌자고양이
[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 |