I. 버퍼란?
여분의 임시 메모리 공간이다. 표준 입·출력 함수를 사용하는 경우에 버퍼를 제공 받는다.
II. 버퍼의 위치
III. 버퍼링(buffering)을 하는 이유
데이터를 키보드로부터 입력을 받거나 모니터로 출력하는 표준 입·출력 작업은 다른 작업에 비해 중요도가 떨어짐에도 의외로 시간이 많이 걸린다. 그래서 급한 작업을 우선으로 처리하고 입·출력 작업은 어느 정도 쌓아 두었다가 처리하는데 이 때 버퍼링 작업이 필요하다.
IV. 버퍼 비우기 fflush 함수
1. syntax
#include <stdio.h>
int fflush(FILE* stream);
지정한 스트림의 버퍼를 비운다. stdin 스트림의 버퍼를 비우면 버퍼안의 데이터들이 모두 버려진다. stdout 스트림의 버퍼를 비우면 데이터들이 목적지를 향해서 출발해서 즉시 출력이 이뤄진다.
2. return
성공 시 0, 실패 시 EOF 를 반환한다.
3. parameters
FILE* stream: 비울 스트림
#include <stdio.h>
int main() {
char perID[7]; //6+null 문자=7
char name[10];
fputs("주민번호 앞 6 자리를 입력: ", stdout);
fgets(perID, sizeof(perID), stdin);
//fflush(stdin); //입력 버퍼를 비운다.
fputs("이름을 입력하세요: ", stdout);
fgets(name, sizeof(name), stdin);
printf("주민번호 앞자리: %s\n", perID);
printf("이름: %s\n", name);
return 0;
}
※ fflush(stdin); 줄의 주석을 넣은 결과와 뺀 결과를 비교해 보자. 실행할 때는 주민번호를 6자리보다 많이 입력해야 한다.
'컴퓨터 > C' 카테고리의 다른 글
C array 다차원 배열과 포인터 (0) | 2022.11.10 |
---|---|
C system() (0) | 2022.11.07 |
C HTTP Request, Response 요청, 응답 메시지 (0) | 2022.11.06 |
C TCP/IP echo server, client 에코 서버, 클라이언트 (0) | 2022.11.06 |
C fdopen() 스트림 열기 (0) | 2022.11.06 |