내가 알고 있기로는
단순히 파일포인터가 끝에 가있다고 feof가 0이 아닌 값을 리턴하는게 아니잖아
아무런 읽기 시도 없이 그냥
fseek(fp, 0, SEEK_END);
while(1){
if(feof(fp))
break;
}
해두면 while 안에 갖혀서 못나오는 것처럼
텍스트 파일 in.txt에
1 2
라고 써져있다고하면
int main(){
FILE *fp;
int a, b;
fp = fopen("in.txt", "r");
fscanf(fp, "%d ", &a);
if(feof(fp))
return;
fscanf(fp, "%d", &b);
if(feof(fp))
return;
printf("%d %d\n", a,b);
return 0;
}
이 코드에서 fscanf로 2를 받아서 b에 넣으면 이제 파일포인터가 끝을 가리키게 될 뿐인데 왜
두번째 feof검사에서 프로그램이 끝나 버리는거야?(원본파일에 2뒤에 스페이스 한 번 눌러주면 정상적으로 printf가 찍힘)
정수형으로 안 받고 캐릭터형으로 받아오면
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
int a, b;
fp = fopen("in.txt", "r");
fscanf(fp, "%c ", &a); //공백처리하기 위해 space를 한칸 넣어줌
if(feof(fp))
return;
fscanf(fp, "%c", &b);
if(feof(fp))
return;
printf("%c %c\n", a,b);
return 0;
}
이거는 두번째 feof검사에서 그냥 넘어가고 printf가 찍히는데,,
도대체 무슨차이인지 좀 알려주라
댓글 0