c언어 파일입출력 질문드립니다.
글쓴이: sks93 / 작성시간: 수, 2016/11/02 - 2:08오후
c언어에서 파일입출력을 할때
feof이나 eof로
파일의 끝을 확인하는걸로 알고있습니다.
그런데 만약 파일이 바로 지금 읽어들일 내용이 EOF일 때 0이 아닌 값을 리턴하고
이미 EOF에 도달했거나 넘어섰다면 0을 리턴한다고 알고있습니다.
시작할때 먼저파일을 읽고 그 파일에 제가 찾고자하는 값이 없을경우 파일에 데이터를 넣고 다시 파일을 읽는형식으로 하려합니다.
이때 만약 파일이 비어있는경우 eof를 어떻게 해야하나요?
eof이 파일이 비어있을때도 0을 리턴하기에 좀 애를먹고있네요
Forums:
feof() 는 그런 함수가 아닙니다. 매뉴얼 읽기
feof() 는 그런 함수가 아닙니다. 매뉴얼 읽기 귀찮으면 검색이라도 해보세요.
#include <stdio.h>
코드만 올리시고 별다른 언급이 없어서 추측하건데,
코드만 올리시고 별다른 언급이 없어서 추측하건데,
위의 코드는 '잘못된 활용의 예'일거라고 믿습니다.
마지막으로 실행되는
a = fgetc(fp);
는 a 에 -1 을 집어넣습니다. (EOF 값이 -1 입니다)
따라서 변수 a의 타입은 char 가 아니라 int 가 되어야 합니다.
fgetc 의 함수원형은 다음과 같구요.
int fgetc ( FILE * stream );
그리고 예로 드신 코드에서 fgetc 가 EOF 를 반환하기 이전이라면
feof함수는 별다른 도움이 안됩니다.
안녕하세요?
진짜 잘 이해가 안되서 너무 궁금하네요..
fgetc의 EOF 값이 -1 이기때문에 a의 타입이 char가 아니라 int가 되어야 하는 이유는 무엇인가요?
조금은 이상하게 적어 놔서 죄송합니다.
조금은 이상하게 적어 놔서 죄송합니다.
char 가 아니라 int 가 되어야 하는 이유는...
1. fgetc 는 int 타입을 반환합니다.
int fgetc ( FILE * stream );
2. fgetc 반환값을 char 로 받을 경우,
스트림에서 읽어들인 데이터 0xff 와 EOF(=-1) 를 서로 구별할 수 없습니다.
댓글 달기