파일의 끝(EOF) 을 찾는 것에 대한 질문입니다.

lovejin0309의 이미지

int main(int argc, char *argv[]){
  FILE *FD;

  while(1){
     if(fgetc(FD) == EOF ) break;
  }

 return 0;
}

위와 같이 짜면 파일을 다 읽고 정상 종료가 됩니다.

하지만 다음과 같이 짜면 fgetc(FD) 가 파일을 마지막을 읽고 9를 리턴합니다.

int main(int argc, char *argv[]){
  FILE *FD;

  while(1){
     read_config(FD);
  }

 return 0;
}

int read_config(FILE *FD){

  if(fgetc(FD) == EOF){
        printf("파일의 끝\n");
        exit(0);
  }
}

찍어 보니까 EOF 처리가 안 될때는 fgetc에서 9를 리턴하고 될 때이는 -1을 리턴하더군요.

조언 부탁합니다.

</code>

pynoos의 이미지

위 코드가 돌고 있는 코드의 일부라면 문제없어 보입니다.
fgetc 에서 0~255 값이 나오면 문자열로 쓰이고 -1 로 나오면 파일의 끝(EOF)으로 인식하는 처리하는 것이 일반적인 c library의 동작입니다.
fgetc의 리턴값이 char나 unsigned char가 아니고 그보다 더 넓은 int인 이유는 파일의 끝을 처리하기 위함이지요.