표준 입출력 라이브러리에서는 텍스트 파일에 문자를 기록하고 읽어올 때 사용하는 입출력 함수와 바이너리 파일에 메모리 값을 덤핑하는 입출력 함수를 제공합니다.
파일을 열 때 디폴트는 텍스트 모드로 열고 있으며 바이너리 모드로 열 때는 "b"를 추가하여야 합니다. 참고로 "t"는 텍스트 모드이지만 디폴트 모드여서 명시할 필요가 없어요.
두 가지 모드의 차이점은 텍스트 모드에서는 모든 데이터를 문자 형태로 기록하며 바이너리 모드에서는 메모리에 있는 내용 그대로 기록한다는 것에 차이가 있어요.
예를 들어 학생 번호가 38번이라고 할 때 텍스트 모드에서는 38을 출력 함수 내부에서 문자열 "38"로 변환하여 출력합니다. 바이너리 모드에서는 메모리에 있는 내용 그래도 기록합니다. 이를 메모장과 같은 응용을 통해 확인하면 텍스트 모드로 기록한 내용은 제대로 확인할 수 있지만 바이너리 모드로 기록한 데이터는 확인하기 어렵습니다. 이는 메모장 프로그램이 텍스트 모드로 입출력하는 프로그램이기 때문입니다.
다음은 간단히 이 둘의 차이를 보여주는 예제 코드입니다.
/********************************************************************** * ex_txtVSbin.c * * exmple source – compare text mode vs binary mode * **********************************************************************/
#include <stdio.h>
int main() { int num = 49;
FILE *fp_txt = fopen("text", "w"); if (fp_txt) { fprintf(fp_txt, "%d\n", num); fclose(fp_txt); } else { printf("failed\n"); }
FILE *fp_bin = fopen("bin", "wb"); if (fp_bin) { fwrite(&num, sizeof(int), 1, fp_bin); fclose(fp_bin); } else { printf("failed\n"); }
return 0; }
|
[그림 5.10] ex_txtVSbin 실행 화면
'프로그래밍 기술 > 리눅스(Unix) 시스템 프로그래밍' 카테고리의 다른 글
표준 입출력 - 파일 스트림 작업 위치 변경 및 확인, fseek, ftell, rewind (0) | 2017.08.03 |
---|---|
표준 입출력 - 바이너리 모드 입출력 함수, fread, fwrite (0) | 2017.08.03 |
표준 입출력 - 텍스트 모드 입출력 함수들 (0) | 2017.08.01 |
표준 입출력 - freopen, fdopen (2) | 2017.07.28 |
표준 입출력 - fopen, fclose (0) | 2017.07.28 |
RAW 입출력과 표준 입출력의 성능 비교 (0) | 2017.07.27 |
표준 입출력 - FILE 구조체 (0) | 2017.07.27 |
표준 입출력 - 버퍼 및 버퍼링 정책 설정 (0) | 2017.07.27 |
파일입출력 - 버퍼링 (0) | 2017.07.25 |
표준 입출력 라이브러리 (0) | 2017.07.25 |