ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • feof()
    Visual Studio/C 기초 2013. 2. 14. 18:17

    feof 함수에 대해 알아보겠습니다.

    feof()는 파일의 마지막을 찾기 위해 사용하는 함수인데요, 파일의 정확한 길이를 모르는 상태에서 파일의 처음부터 마지막까지를 읽어들이기 원하는 경우엔 방법이 두 가지가 있습니다.

    텍스트 모드의 파일에서 문자 단위로 값을 읽어들일 때는 EOF 문자를 찾을 수 있습니다. EOF는 표준 입출력에 정의되어 있는 -1값이며 실제론 사용되지 않는 값입니다. 그래서 EOF가 발견되면 파일의 마지막에 도달했다는 것을 알 수 있습니다.

    while((c=fgetc(fp)) != EOF)        //이런 식으로 찾을 수 있죠

    이제 feof를 사용해보겠습니다.

    int feof(FILE *fp);

    인수 fp는 파일을 열 때 fopen()이 돌려주는 FILE형 포인터입니다. feof()는 파일 fp의 마지막에 도달하지 않았다면 0을 돌려주고 도달했다면 0이 아닌 값을 돌려줍니다. feof()를 사용해서 파일의 마지막에 도달했다는 것을 파악하면 rewind()를 수행하거나 fseek()를 사용하거나 파일을 닫고 다시 열 때까지 더 이상의 읽기 동작을 허용하지 않으면 됩니다.

    예제를 보겠습니다.

     

    #include <stdio.h>
    #include <stdlib.h>

    #define BUF 100

    main() {
     char buf[BUF];
     char filename[60];
     FILE *fp;

     puts("표시할 텍스트 파일을 입력해주세요 :");
     gets(filename);

     if((fp=fopen(filename,"r"))==NULL)
     {
      fprintf(stderr, "파일을 여는 데 실패했습니다");
      exit(1);
     }

     while(!feof(fp))  //파일의 마지막에 도달하지 않았다면 한 줄을 읽고 출력합니다.
     {
      fgets(buf,BUF,fp);
      printf("%s",buf);
     }
     printf("\n");
     fclose(fp);

    'Visual Studio > C 기초' 카테고리의 다른 글

    C언어 파일 이름 변경하기 [rename()]  (0) 2013.05.15
    remove()  (0) 2013.05.15
    fseek()  (0) 2012.11.05
    ftell(), rewind()  (0) 2012.11.04
    fscanf(), fwrite(), fread()  (0) 2012.11.04

    댓글

Designed by Tistory.