개념
C 파일 입출력(File I/O)은 C 프로그래밍 언어에서 파일을 읽고 쓰는 기능을 제공하는 표준 입출력 라이브러리 인터페이스를 의미한다. ISO/IEC 9899 표준(일명 C 표준)에서 정의된 <stdio.h> 헤더와 관련 함수들을 이용한다.
주요 요소
| 요소 | 설명 |
|---|---|
FILE 객체 |
파일 스트림을 표현하는 불투명 타입. fopen 등으로 얻은 후 fclose 로 해제한다. |
| 파일 열기/닫기 | FILE *fopen(const char *pathname, const char *mode);int fclose(FILE *stream); |
| 입출력 모드 | r(읽기), w(쓰기), a(추가)와 이들의 바이너리 버전(rb, wb, ab) 등. |
| 텍스트 입출력 | fprintf, fscanf, fgets, fputs 등 포맷 기반 함수. |
| 바이너리 입출력 | fread, fwrite 등 블록 단위 읽기·쓰기 함수. |
| 버퍼링 | 표준 입출력은 기본적으로 전용 버퍼를 사용해 시스템 호출 수를 최소화한다. setvbuf 로 버퍼 모드(전용, 라인, 무버퍼)를 제어 가능. |
| 오류·끝 검사 | feof, ferror, clearerr 로 파일 상태를 확인하고 처리한다. |
| 파일 위치 제어 | fseek, ftell, rewind 로 스트림 내 위치를 이동하거나 현재 오프셋을 얻는다. |
| 표준 스트림 | stdin, stdout, stderr는 각각 표준 입력·출력·오류 스트림을 나타내는 전역 FILE* 객체다. |
역사 및 표준화
초기 C 언어(1970년대 초)에서는 파일 입출력에 대한 정의가 없었으며, 1978년 발표된 ANSI C(후에 ISO/IEC 9899) 표준에서 <stdio.h>와 함께 체계화되었다. 이후 C89/90, C99, C11, C17 등 모든 주요 C 표준에서 동일한 인터페이스를 유지하고 있다.
사용 예시
#include <stdio.h>
int main(void) {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) return 1; // 파일 열기 실패
fprintf(fp, "Hello, World!
"); // 텍스트 쓰기
fclose(fp);
return 0;
}
관련 표준
- ISO/IEC 9899:1990 – C89/90 (첫 번째 표준)
- ISO/IEC 9899:1999 – C99 (추가 함수
snprintf등) - ISO/IEC 9899:2011 – C11
- ISO/IEC 9899:2018 – C17
참고
- C 표준 라이브러리 매뉴얼 및 구현체(예: GNU glibc, Microsoft CRT)에서 상세 동작을 확인할 수 있다.
- 파일 입출력은 운영체제와 파일 시스템의 특성에 따라 텍스트와 바이너리 모드 동작이 다를 수 있다.
이 항목은 C 프로그래밍 언어에서 정의된 표준 파일 입출력 기능에 대한 객관적 요약이다.