C 파일 입출력
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
C 파일 입출력은 C 표준 라이브러리의
더 읽어볼만한 페이지
- 입출력 - 터치 타이핑
터치 타이핑은 키보드를 보지 않고 손가락 위치를 기억해 타이핑하는 기술로, 효율적인 방법으로 알려져 있으며 꾸준한 연습으로 속도와 정확성을 향상시킬 수 있다. - 입출력 - 입력
입력은 컴퓨터에 정보나 명령을 전달하는 방식으로, 키보드, 마우스, 스캐너, 음성 입력 장치, 게임 컨트롤러 등 다양한 장치를 통해 이루어지며 '가져오다' 또는 '읽어 들이다'와 같은 의미로도 사용된다. - C 표준 라이브러리 - 파일 끝
파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다. - C 표준 라이브러리 - C 자료형
C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.
C 파일 입출력 | |
---|---|
개요 | |
정의 위치 | stdio.h 헤더 파일 |
스트림 | |
표준 스트림 | stdin stdout stderr |
파일 스트림 | 파일 포인터를 사용하여 파일에 접근 |
함수 | |
파일 접근 | fopen fclose |
문자 입출력 | fgetc fgets fputc fputs getc getchar putc putchar ungetc |
직접 입출력 | fread fwrite |
위치 지정 | fgetpos fseek fsetpos ftell rewind |
포맷 입출력 | fprintf fscanf printf scanf snprintf sprintf sscanf vfprintf vfscanf vprintf vscanf vsnprintf vsprintf vsscanf |
에러 처리 | clearerr feof ferror perror |
기타 | |
관련 주제 | C 파일 입출력 C 문자열 처리 C 언어의 동적 메모리 할당 |
2. 역사
stdio.h 라이브러리는 스트림을 사용하여 키보드, 프린터, 터미널 등 물리 장치나 시스템에서 지원하는 다른 종류의 파일을 조작한다. 스트림은 이러한 장치를 동일한 방식으로 처리하기 위한 추상화이다. 모든 스트림은 관련 물리 장치의 차이와 관계없이 유사한 속성을 갖는다.[12]
C 파일 입출력 기능의 대부분은 C 표준 라이브러리 헤더 파일인 `stdio.h`에 정의되어 있다. (C++의 경우 `cstdio` 헤더에 포함되어 있으며, `std` 네임스페이스를 사용해야 한다.)[12]
POSIX 표준에서는 stdio에 대한 확장을 정의하고 있다. 이를 통해 메모리를 자동으로 할당하는 `readline` 함수, `FILE` 형식과 파일 디스크립터를 연결하는 `fileno` 함수와 `fdopen` 함수를 사용하는 것이 가능하게 된다.[13]
3. 주요 기능
이 라이브러리는 키보드, 프린터, 터미널과 같은 물리적 장치 또는 시스템에서 지원하는 다른 모든 유형의 파일과 작동하기 위해 스트림이라고 하는 것을 사용한다. 스트림은 이러한 장치와 통일된 방식으로 상호 작용하기 위한 추상화이다. 모든 스트림은 연결된 물리적 매체의 개별 특성과 관계없이 유사한 속성을 갖는다.[12]기능 바이트 문자 와이드 문자 설명 파일 접근 fopen 파일을 연다 (윈도우에서는 비-유니코드 파일 이름, 유닉스에서는 UTF-8 파일 이름). freopen 기존 스트림으로 다른 파일을 연다. fflush 출력 스트림을 실제 파일과 동기화한다. fclose 파일을 닫는다. setbuf 파일 스트림에 버퍼를 장착시킨다. setvbuf 파일 스트림 크기에 맞게 버퍼를 장착시킨다. fwide 전각 문자와 반각 문자간 파일 스트림 교환. 직접 입출력 fread 파일에서 데이터를 읽는다. fwrite 파일에 데이터를 쓴다. 비형식화 입출력 fgetc, getc fgetwc, getwc 파일 스트림으로부터 바이트 또는 와이드 문자를 읽는다. fgets fgetws 파일 스트림으로부터 바이트 또는 와이드 문자열을 한 줄 읽는다. fputc, putc fputwc, putwc 파일 스트림에 바이트 또는 와이드 문자를 쓴다. fputs fputws 파일 스트림에 바이트 또는 와이드 문자열을 쓴다. getchar getwchar 표준 입력으로부터 바이트 또는 와이드 문자를 읽는다. gets 새 줄이 나오거나 파일 끝까지 갈 때까지 표준 입력으로부터 바이트 문자열을 읽는다. (C99에서 사용 중단, C11에서 삭제) putchar putwchar 표준 출력으로 바이트 또는 와이드 문자를 쓴다. puts 표준 출력으로 바이트 문자열을 쓴다. ungetc ungetwc 파일 스트림에 바이트 또는 와이드 문자를 제자리에 돌려놓는다. 형식화 입출력 scanf, fscanf, sscanf wscanf, fwscanf, swscanf 파일 스트림이나 버퍼의 표준 입력으로부터 형식화된 바이트 또는 와이드 문자를 읽는다. vscanf, vfscanf, vsscanf vwscanf, vfwscanf, vswscanf 가변 인자 목록을 쓰는 파일 스트림이나 버퍼의 표준 입력으로부터 형식화된 바이트 또는 와이드 문자를 읽는다. printf, fprintf, sprintf, snprintf wprintf, fwprintf, swprintf 파일 스트림이나 버퍼의 표준 출력으로 형식화된 바이트 또는 와이드 문자를 출력한다. vprintf, vfprintf, vsprintf, vsnprintf vwprintf, vfwprintf, vswprintf 가변 인자 목록을 쓰는 파일 스트림이나 버퍼의 표준 출력으로 형식화된 바이트 또는 와이드 문자를 출력한다. perror 표준 에러에 현재 에러 설명을 쓴다. 파일 위치 조정 ftell, ftello 현재 파일 포인터를 되돌려준다. fseek, fseeko 파일의 특정 위치로 파일 포인터를 이동한다. fgetpos 파일 포인터를 얻는다. fsetpos 파일의 특정 위치로 파일 포인터를 이동한다. rewind 파일 포인터를 파일의 첫 시작 부분으로 이동한다. 에러 조작 clearerr 에러를 지운다. feof 파일의 끝을 체크한다. ferror 파일 에러를 체크한다. 파일 조작 명령 remove 파일을 삭제한다. rename 파일 이름을 수정한다. tmpfile 임시 파일로 포인터를 되돌려준다. tmpnam 특수 파일 이름을 되돌려준다.
3. 1. 파일 접근
C 언어에서 파일 입출력의 기본은 파일을 열고 닫는 것이다. 파일을 열 때는 `fopen()` 함수를 사용하고, 파일을 닫을 때는 `fclose()` 함수를 사용한다. `freopen()` 함수는 이미 열려 있는 스트림을 다른 파일에 연결할 때 사용된다.
`fflush()` 함수는 출력 스트림의 버퍼를 비워 그 내용을 실제 파일에 기록한다. `setbuf()` 함수와 `setvbuf()` 함수는 파일 스트림의 버퍼링 방식을 설정하는 데 사용된다.
`fwide()` 함수는 스트림의 입출력 단위를 바이트(반각 문자) 또는 와이드 문자(전각 문자)로 설정한다. 이 함수는 한국어와 같이 멀티바이트 문자를 처리하는 데 중요하다.[12]
함수 | 설명 |
---|---|
fopen | 파일을 연다. (윈도우에서는 비-유니코드 파일 이름, 유닉스에서는 UTF-8 파일 이름) |
freopen | 이미 열려있는 스트림으로 다른 파일을 연다. |
fflush | 출력 스트림을 실제 파일과 동기화한다. |
fclose | 파일을 닫는다. |
setbuf | 파일 스트림에 버퍼를 설정한다. |
setvbuf | 파일 스트림 크기에 맞게 버퍼를 설정한다. |
fwide | 파일 스트림을 와이드 문자 입출력과 좁은 문자 입출력 간에 전환한다. |
3. 2. 직접 입출력
https://en.cppreference.com/w/c/io/fread fread 함수와 https://en.cppreference.com/w/c/io/fwrite fwrite 함수는 형식 지정 없이 파일에서 데이터를 읽고 쓴다.[12]함수 | 설명 |
---|---|
https://en.cppreference.com/w/c/io/fread fread | 파일에서 데이터를 읽는다. |
https://en.cppreference.com/w/c/io/fwrite fwrite | 파일에 데이터를 쓴다. |