내가 알고 있기로는


단순히 파일포인터가 끝에 가있다고 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가 찍히는데,,

도대체 무슨차이인지 좀 알려주라