#include<stdio.h>

main()
{
      int state;
      char ch;

      /* 파일의 개방 */
      FILE * file = fopen("c:\\test.txt", "wb");
      if(file == NULL){
            printf("file open error!\n");
            return 1;
      }

      fputc('1', file);
      fputc((char)255, file); //(char)255로 파일에 쓰면 -1이 들어간다. char 255는 11111111이므로
      fputc('2', file);

      /* 파일의 종결 */
      state = fclose(file);
      if(state != 0){
            printf("file close error!\n");
            return 1;
       }

      /* 파일의 개방 */
      file = fopen("c:\\test.txt", "rb");
      if(file == NULL){
            printf("file open error!\n");
            return 1;
      }

      while(1)
      {
            ch=fgetc(file);
            if(feof(file) != 0) //file을 이용하여 FILE의 구조체 변수를 참조한다. 그래서 파일의 끝이 아니면 
                  break;            //0을 리턴해주고 파일의 끝을 만나면 0이 아닌 값을 리턴한다.
            fputc(ch, stdout);
            putchar('\n');
      }

      /* 파일의 종결 */
      state = fclose(file);
      if(state != 0){
            printf("file close error!\n");
            return 1;
       }

      return 0;
}


feof 함수는 전달되는 파일 포인터가 가리키는 FILE 구조체 변수를 참조한다. 
왜냐하면 그곳에는 파일의 끝에 도달했는지에 대한 정보가 존재하기 때문이다.

int feof(FILE * stream)
feof 함수는 호출 시 전달되는 파일 포인터가 가리키는 파일이 끝에 도달한 경우 0이 아닌 값을 리턴한다.

Posted by scii
: