mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, July 05, 2006

C언어 소스] 텍스트 파일 읽기; 도스창 화면에 파일 내용 출력; 도스 type 명령


도스의 type 명령처럼 텍스트 파일을 화면에 출력하는 예제입니다. 최대한 간단히 만들기 위해, 명령행 옵션 해석 부분은 생략했습니다. 따라서 이 예제는 test.txt 라는 이름의 파일만 읽을 수 있습니다.

텍스트 파일 열기 (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;
}



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++)

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top