Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[C/C++] 콘솔 입력 버퍼 비우기 (개행문자 제거) 본문

C C++

[C/C++] 콘솔 입력 버퍼 비우기 (개행문자 제거)

닌자고양이 2019. 10. 21. 05:32

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