C언어 파일 입출력 입니다;; 이 코딩의 오류를 잘 모르겠습니다.
글쓴이: seojh1431 / 작성시간: 토, 2014/07/12 - 6:47오전
int main() { FILE *fp = fopen("list.txt", "r"); //텍스트파일 list.txt를 읽기용으로. char data; if (fp == NULL) { printf("파일 열기 오류! \n"); return 0; } while (data=fgetc(fp) != EOF) //파일의 끝이 아니라면 읽기용으로 선언한 list.txt를 가리키는 파일포인터에 있는 내용을 읽어옵니다. { if (data == EOF) break; //만일 fp가 파일의 끝이라면 반복루프에서 빠져나갑니다 putchar(data); //여기서 읽어들인 data를 프롬프트화면에 출력.. 여기서 오류가 나는것같습니다. } fclose(fp); }
Forums:
data=fgetc(fp) != EOF 이렇게 쓰면
data=fgetc(fp) != EOF
이렇게 쓰면 data = (fgetc(fp) != EOF) 가 됩니다. 연산자 우선순위를 찾아보세요.
그리고 while문에서 비교를 하고 if (data == EOF) break가 또 나오는 걸 보니 각 문장의 의미가 뭔지 잘 이해를 못하시는 것 같습니다. 각각의 문장의 의미가 뭔지, 어떤 상황에서 프로그램이 어느 줄로 이동하는지, 찬찬히 생각해 보세요.
이렇게 해도 되겠죠.
while ( (data=fgetc(fp) ) != EOF) {
//진술문
}
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
fgetc()의 return 값은 int 타입으로
fgetc()의 return 값은 int 타입으로 받아야 합니다. (EOF가 int이기 때문) char로 받으면 안됩니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기