파일 스트림

스트림이란 데이터가 이동하는 통로다. 파일은 운영체제가 정의하는 형식이기에 파일을 읽어들이기 위한 스트림도 운영체제가 관리한다.


C에서 파일의 스트림을 얻는 방법은 fopen 함수다.

fopen함수의 마지막 인자로 들어가는 문자열에 따라 스트림의 종류가 결정된다.

다 쓴 스트림은 fclose로 닫는다. 닫아야 하는 이유는 운영체제에 사용한 자원(메모리 등)을 반환하고 버퍼를 방출하기 위함이다.

수동으로 버퍼를 방출하는 fflush는 입력모드의 스트림버퍼엔 사용할 수 없다. 출력 스트림 버퍼에만 가능. 



fopen의 모드

스트림

r 읽기           r+ 읽기/쓰기            파일이 없으면 에러

w 쓰기           w+                        파일이 없으면 생성

a  덧붙이기      a+ 읽기/덧붙이기    파일이 없으면 생성


텍스트 저장방식

t : 텍스트 : 운영체제별 개행을 어떻게 처리하는지의 차이가 있음. 

b : 바이너리 : 그냥 데이터 



파일 입출력 함수들

stdin        키보드

stdout       모니터

stderr        모니터

프로그램이 시작하면 위 세개의 스트림은 자동으로 열린다. 이들의 타입은 FILE* 이다. 표준 입출력이 운영체제의 파일 시스템을 기반으로 구현되있기 때문. 따라서 파일을 대상으로 한 함수의 인자로 들어갈 수 있다.


문자

fgetc

getc

fputc

putc


문자열

gets : '\n'을 읽지 않아서 버퍼에 찌꺼기가 남는다.

puts : 자동으로 '\n'을 포함시켜서 출력한다.

fgets : '\n'도 포함해서 읽고, 인자로 들어간 count는 널문자도 포함한 수다.  에러 또는 EOF의 경우 NULL 반환

fputs : '\n'을 포함시키지 않는다.


서식

fscanf

fprintf


바이너리 : 읽거나 쓴 개수를 반환한다.

fread   

fwrite    


파일의 끝 확인

feof