728x90
반응형
개요
파일 작업은 C 언어에서 두 가지 주된 방법으로 수행된다. 바로 open() 함수와 fopen() 함수이다. 이 두 함수는 각각 파일을 다루는 방식이 다르며, 이로 인해 다양한 장단점이 존재한다.
파일 디스크립터 vs 파일 스트림
- 파일 디스크립터:
- open() 함수는 파일을 구별하기 위해 정수 번호인 파일 디스크립터를 사용한다.
- 기본적인 입출력 기능을 수행할 수 있는 다양한 시스템 호출과 연결된다.
- 파일 스트림:
- fopen() 함수는 FILE 구조체를 이용하여 파일 스트림을 관리한다.
- 더욱 다양한 타입의 데이터 처리 및 버퍼링 기능을 지원하여 편리함을 제공한다.
파일 디스크립터 (open) | 파일 스트림 (fopen) |
open() | fopen() |
close() | fclose() |
read() | fgetc() |
write() | fputc() |
lseek() | fgets() |
fcntl() | fputs() |
fscanf() | |
fprintf() | |
fread() | |
fwrite() | |
ungetc() | |
feof() | |
ferror() | |
clearerr() | |
ftell() | |
rewind() | |
fseek() |
이식성
C 표준 라이브러리를 사용하면 다양한 플랫폼에서 높은 이식성을 보장한다. 예를 들어, 특정 시스템에 종속된 함수를 사용하면 코드 수정이 발생할 수 있으나, C 표준 라이브러리는 대부분의 C 컴파일러에서 지원된다.
이를 통해 복잡함을 줄이고, 소스 코드의 재작성 필요성을 최소화한다.
이중 버퍼
fopen()는 C 표준 라이브러리에서 제공하는 버퍼와 시스템에서 제공하는 버퍼를 이중으로 사용한다. 이는 시스템 버퍼만 사용할 때 발생할 수 있는 성능 저하 문제를 완화하고, 프로그램의 안정성을 향상시킨다.
시스템 버퍼는 주로 장치 작업에 최적화되어 있으며, C 라이브러리의 버퍼는 사용자 프로그램에서의 입출력을 효율적으로 관리한다.
결론
open() 함수는 시스템 프로그래밍에 적합하며, 장치 작업에 더 가까운 지향성을 가지고 있지만, fopen() 함수는 다룰 수 있는 데이터 타입과 처리 방식이 더 많아, 일반적인 파일 작업에 더 적합하다.
참고 문헌
728x90
반응형
'Programming > C' 카테고리의 다른 글
cJSON을 활용한 JSON 파싱 (2) | 2025.03.25 |
---|---|
환경변수와 디렉토리 생성: C 언어에서의 크로스 플랫폼 접근 (0) | 2025.03.22 |
popen 함수 (0) | 2025.03.19 |
C언어로 하는 TCP/IP 소켓 통신 (4) | 2025.03.18 |
openssl을 활용한 SSL 통신 (0) | 2025.03.17 |