728x90
반응형
getchar()을 쓰자...ㅠ
보통 C언어에서는 입력 버퍼를 비우기 위해 fflush를 사용하는 경우가 있다.
예를 들어 배열의 크기를 입력받고, 그 안에 요소들을 한개씩 입력받는 경우에 개행문자('\n')가 그대로 들어가는 문제가 발생한다.
이를 방지하기 위해 백준에서 위 1991번 문제를 풀 때 fflush를 사용하였다.
예전부터 입력 버퍼 비우려면 fflush(stdin);이 정답이라고만 생각해서
생각없이 썼는데 이번 기회에 왜 쓰면 안되는지를 생각해보았다.
fflush는 출력 스트림에 대해서는 정의가 되어있지만 입력 스트림에 대해서는 정의가 되어있지 않다고 나와있다.
또한 공식 문서를 확인해보니 2015년 부터에서는 아무런 효과가 나타나지 않는다고 적혀있어서
https://en.cppreference.com/w/c/io/fflush
에서도, VS2015 전까지는 입력 버퍼를 비워줬던 것 같지만 이후에는 아무런 기능을 넣지 않았다고 적혀있다.
그러면 입력 스트림을 비우기 위해 뭘 써야하나?라는 생각이 들 수도 있다.
getchar()을 쓰자
728x90
반응형
'🌀 알고리즘(Algorithm) > 백준(문제 풀이)' 카테고리의 다른 글
[파이썬 풀이] 9251번: LCS(Longest Common Subsequence) - 백준 (0) | 2024.02.28 |
---|---|
[파이썬 풀이] 11687번: 팩토리얼 0의 개수 - 백준 (1) | 2024.01.20 |
[파이썬 풀이] 25345번: 루나의 게임 세팅 - 백준 (0) | 2022.08.17 |
[파이썬 풀이] 1152번: 단어의 개수 - 백준 (0) | 2022.08.14 |
[파이썬 풀이] 17202번: 핸드폰 번호 궁합 - 백준 (0) | 2022.07.28 |