파일의 끝(EOF) 을 찾는 것에 대한 질문입니다.
글쓴이: lovejin0309 / 작성시간: 목, 2005/10/13 - 10:30오전
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>
Forums:


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