C언어 - 파일 입출력(2)   표준 입출력

 

표준 파일 입출력에서 처리하는 데이터의 종류는 문자 데이터, 문자열 데이터, 형식화된 데이터, 구조체 데이터의 네 가지 이다.

 

다음의 표는 표준 콘솔 입출력 함수, 표준 파일 입출력 함수, 그리고 시스템 입출력 함수의 관계를 나타낸다.

입출력 함수 표

 

데이터 형식

표준 콘솔입출력

표준 파일 입출력

시스템 입출력 함수

문자 데이터

getchar(),putchar(),putch()

getc(),putc()

 

문자열 데이터

fgets(),fputs()

gets(),puts()

 

형식화 데이터

scanf(),printf()

fscanf(),fprintf()

 

구조체 데이터

 

fread(),fwrite()

read(),write()

 

 

여기서 표준 콘솔 입출력이란 표준 입출력 장치인 키보드와 화면을 통한 입출력을 말한다.

 

버퍼

  

표준 입출력에서는 버퍼가 이용된다. 버퍼는 임시 기억장소를 의미하며, 보이지는 않지만 운영체제에 의해서 관리된다.

 

예를 들어  putc() 함수를 이용하여 한 문자를 디스크에 기록할 때는 한 문자씩 디스크에 기록을 하는데 이 방법은 디스크가 읽고 쓰는 시간이 많이 걸리므로 효울적이지 않다.

 

그래서 버퍼라는 임시 공간을 만들어서, 이 버퍼가 다채워질 때 까지 기다렸다가 한꺼번에 기록하는 방식이다.

 

따라서 putc() 함수의 호출로 하나의 문자가 기록되는 연산은 실제로 디스크가 아니라 버퍼에 기록이 되는 것이다. 보통 버퍼의 크기는 512바이트나 512 바이트의 배수 이다.

 

버퍼내의 데이터는 다음의 경우에 실제 디스크에 기록된다.

 

1)버퍼가 다 채워 졌을 경우

2)파일이 닫힐때

3)프로그램이 종료될 때