Wednesday, July 05, 2006
C언어 소스] 텍스트 파일 읽기; 도스창 화면에 파일 내용 출력; 도스 type 명령
도스의 type 명령처럼 텍스트 파일을 화면에 출력하는 예제입니다. 최대한 간단히 만들기 위해, 명령행 옵션 해석 부분은 생략했습니다. 따라서 이 예제는 test.txt 라는 이름의 파일만 읽을 수 있습니다.
fgets() 함수가 행 1개를 읽어들이면 그 행이 char s 속에 들어갑니다.
파일 열기 함수인, fopen() 에서, "rt" 란, 파일을 "읽기 전용 모드 + 텍스트 파일 모드"로 열라는 의미입니다.
fgets() 함수는 텍스트 파일의 행 1개를 행의 끝까지 읽습니다. 그러나 읽을 수 있는 행의 길이에 제약이 있습니다. MAX_COLS 는 Maximum Columns 의 의미로서, 행의 최대 길이를 제가 미리 지정해 놓은 것입니다. fgets() 함수는, MAX_COLS 보다 긴 행은 더 읽지 못하지만, 행의 최대 길이를 32768 바이트로 지정해 주면 충분할 것입니다.
fgets() 함수는 텍스트 파일의 딱 1줄만 읽기 때문에, while 문으로 루프를 만들어야 파일의 모든 줄을 읽을 수 있습니다. != NULL 이라는 것은, NULL 이 나오지 않는 한, 계속 while 루프를 돌려라, 즉 파일의 끝까지 읽으라는 얘깁니다.
return 0; 라는 것은, main() 함수를 종료하고 0을 반환하라는 의미인데, main() 함수는 프로그램의 본체이므로, main() 함수에서 빠져나간다는 말은, 프로그램을 끝내라는 의미가 됩니다. 에러가 없으면 0을 반환하고, 에러가 있으면 0이 아닌 정수를 반환합니다.
이 예제 프로그램은, 하드의 현재 폴더에 test.txt 라는 이름의 텍스트 파일이 이미 있어야만 작동합니다. 그렇지 않으면 Cannot open input file... (입력 파일을 열 수 없습니다...) 이라는 에러가 나고 즉시 종료됩니다. test.txt 라는 파일을 메모장 등으로 만든 후, 적당한 텍스트를 카피해서 미리 만들어 두어야 합니다.
▶▶ C언어] 이진파일 읽기; 바이너리 파일 읽기전용으로 열기; Open, Read Binary File
▶▶ [C언어 기초 예제] 실행할 때 지정해준 파라미터(옵션; 인수, Arguments) 얻기, 해석하기
사용자 옵션으로 임의의 파일을 지정하여 출력하는 법: ▶▶ C언어] 파일에 줄번호, 행번호 (줄 번호, 행 번호) 붙이기 Line Number Text File
텍스트 파일 열기 (Text File Open) / 한줄씩 읽기 예제 소스
#include <stdio.h>
#include <stdlib.h> // exit() 함수를 위해
#define MAX_COLS 32768
int main() {
FILE *in;
char s[MAX_COLS]; // 행이 1줄씩 임시로 저장될 버퍼
// fopen() 함수로 파일 열기
if ( (in = fopen("test.txt", "rt")) == NULL) {
fputs("Cannot open input file...\n", stderr);
exit(1); // 모든 파일 닫고, 프로그램 종료
}
// 읽기 시작: 프로그램의 본체
while (fgets(s, MAX_COLS, in) != NULL) {
printf(s); // 한 줄씩 화면에 출력
}
fcloseall(); // 모든 파일 닫기
return 0;
}
#include <stdlib.h> // exit() 함수를 위해
#define MAX_COLS 32768
int main() {
FILE *in;
char s[MAX_COLS]; // 행이 1줄씩 임시로 저장될 버퍼
// fopen() 함수로 파일 열기
if ( (in = fopen("test.txt", "rt")) == NULL) {
fputs("Cannot open input file...\n", stderr);
exit(1); // 모든 파일 닫고, 프로그램 종료
}
// 읽기 시작: 프로그램의 본체
while (fgets(s, MAX_COLS, in) != NULL) {
printf(s); // 한 줄씩 화면에 출력
}
fcloseall(); // 모든 파일 닫기
return 0;
}
fgets() 함수가 행 1개를 읽어들이면 그 행이 char s 속에 들어갑니다.
파일 열기 함수인, fopen() 에서, "rt" 란, 파일을 "읽기 전용 모드 + 텍스트 파일 모드"로 열라는 의미입니다.
fgets() 함수는 텍스트 파일의 행 1개를 행의 끝까지 읽습니다. 그러나 읽을 수 있는 행의 길이에 제약이 있습니다. MAX_COLS 는 Maximum Columns 의 의미로서, 행의 최대 길이를 제가 미리 지정해 놓은 것입니다. fgets() 함수는, MAX_COLS 보다 긴 행은 더 읽지 못하지만, 행의 최대 길이를 32768 바이트로 지정해 주면 충분할 것입니다.
fgets() 함수는 텍스트 파일의 딱 1줄만 읽기 때문에, while 문으로 루프를 만들어야 파일의 모든 줄을 읽을 수 있습니다. != NULL 이라는 것은, NULL 이 나오지 않는 한, 계속 while 루프를 돌려라, 즉 파일의 끝까지 읽으라는 얘깁니다.
return 0; 라는 것은, main() 함수를 종료하고 0을 반환하라는 의미인데, main() 함수는 프로그램의 본체이므로, main() 함수에서 빠져나간다는 말은, 프로그램을 끝내라는 의미가 됩니다. 에러가 없으면 0을 반환하고, 에러가 있으면 0이 아닌 정수를 반환합니다.
이 예제 프로그램은, 하드의 현재 폴더에 test.txt 라는 이름의 텍스트 파일이 이미 있어야만 작동합니다. 그렇지 않으면 Cannot open input file... (입력 파일을 열 수 없습니다...) 이라는 에러가 나고 즉시 종료됩니다. test.txt 라는 파일을 메모장 등으로 만든 후, 적당한 텍스트를 카피해서 미리 만들어 두어야 합니다.
▶▶ C언어] 이진파일 읽기; 바이너리 파일 읽기전용으로 열기; Open, Read Binary File
▶▶ [C언어 기초 예제] 실행할 때 지정해준 파라미터(옵션; 인수, Arguments) 얻기, 해석하기
사용자 옵션으로 임의의 파일을 지정하여 출력하는 법: ▶▶ C언어] 파일에 줄번호, 행번호 (줄 번호, 행 번호) 붙이기 Line Number Text File
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home