파일의 끝(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
댓글 달기