일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Algorithm
- Python
- C# delegate
- Data Structure
- git
- HTML
- Houdini
- c# 윈폼
- c# 추상 클래스
- 다트 언어
- 깃
- C언어 포인터
- Flutter
- 플러터
- gitlab
- github
- Unity
- vim
- 도커
- 유니티
- dart 언어
- c언어
- c# winform
- docker
- 구조체
- 포인터
- jupyter
- jupyter lab
- C++
- c#
Archives
- Today
- Total
목록입력 버퍼 (1)
nomad-programmer
[Programming/C] Linux에서 Buffer 비우는 방법
fgets 함수를 사용하여 문자열을 stdin으로 받는다고 생각해보자. 이때 fgets 함수가 받을 수 있는 길이보다 입력한 문자열이 더 길 경우, fgets 함수는 자기가 받을 수 있는 만큼만 받아 변수에 그 값을 넣어주고 끝난다. 그럼 이때 stdin 버퍼에는 입력 받고 남은 문자 찌꺼기들이 남아있다. 이것을 비워줘야 문제가 발생하지 않는다. 아래의 예제를 살펴보자. stdin 버퍼에 남아있는 문자들을 \n 문자가 나올 때까지 무한루프를 돌고 있다. 어째서 \n 문자일까? 이것은 키보드에서 Enter가 나올때까지 입력 스트림에서 버퍼로 저장되기 때문이다. 즉 \n이 마지막에 존재할 것이다. 그래서 \n 문자가 나올 때까지 무한루프를 돌리면 입력 버퍼는 깨끗이 비워진다. 입력 버퍼를 비우지 않아 예상치..
Programming/C
2020. 1. 7. 03:57