스트림(stream) : 데이터 이동의 경로가 되는 다리, program과 파일 사이에 스트림을 형성해야 데이터를 주고 받을 수 있다.
파일 : 운영체제에 의해서 그 구조가 결정되고 관리되는 대상, 파일 뿐만 아니라 스트림의 형성도 운영체제의 몫임을 기억해야 한다.
fopen 함수 호출을 통한 파일과의 스트림 형성과 FILE 구조체
1 2 | #include <stdio.h> FILE * fopen(const char * filename, const char * mode); |
fopen 함수의 반환형은 FILE인데 구조체의 포인터이다. 파일을 가리키기 위한 용도로 사용됨.
이 포인터를 이용해서 파일에 데이터를 저장하거나 파일에 저장된 데이터를 읽게 된다.
fputc('A',fp); fp(파일포인터)가 가리키는 곳에 문자 'A' 저장
fclose : 스트림의 소멸(해제)을 요청하는 함수
1 2 3 | #include <stdio.h> int fclose(FILE * stream); |
fclose 함수가 호출이 되면 데이터는 안정적으로 저장이 됨.
개방되었던 파일을 닫아주어야 하는 이유 : 운영체제가 할당한 자원의 반환, 버퍼링 되었던 데이터의 출력
fflush : 스트림을 종료하지 않고 버퍼만 비우고 싶을 때
1 2 3 | #include <stdio.h> int fflush(FILE * stream); |
출력 버퍼를 비움 : 출력 버퍼에 저장된 데이터를 목적지로 전송한다는 의미
입력 버퍼를 비움 : 입력 버퍼에 저장된 데이터를 소멸 시킨다는 의미
fflush 함수는 출력 버퍼를 비우는 함수, 입력 버퍼를 대상으로 호출할 수 없음
저장한 파일을 읽어들일 때에는 fopen함수의 mode부분을 "rt"로 바꿔주고 fgetc로 읽어들이면 됨
'언어 > C' 카테고리의 다른 글
파일 입출력 -3 (0) | 2016.03.18 |
---|---|
파일 입출력 -2 (0) | 2016.03.13 |
구조체 기초 (열거형 enum) (0) | 2016.03.10 |
구조체 기초 (union, struct의 차이) (0) | 2016.03.07 |
escape sequence (0) | 2016.02.26 |