메모장에는 저기 써놓은게 다구요, 저기에서 줄바꿈 하나도 없습니다.
위의 사진에서 보면
루프를 계속 돌텐데 fscanf의 반환값을 ret에 저장해서 ret이 EOF가 되면 루프를 빠져나가서 함수가 종료되게 되있습니다.
이게 책에 나온 예문이었는데
1. 입력 2.조건식 3. 출력
여기에서 조건식이 중간에 있는게 이해가 안되서(마지막의 이영호는 출력이 안되야될것같았는데)
뒤에서 배우는 ftell이랑 조합해서... 해봤습니다(쓸모없는 짓이었던것 같지만)
fscanf의 반환값은 파일의 끝에 도달하거나 오류가 발생하면 EOF를 반환한다고 알고있습니다.
feof는 더이상 읽어들일 데이터가 존재하지 않으면 0이 아닌 값을 반환한다고 알고있구요(책보고 썼습니다.)
그런데 서로 값이 변하는 부분이 다른 것이 정말 궁금합니다.
알려주세요 프갤 지식인!
====코드====
#include <stdio.h>
int main(void)
{
char name[10];
char sex;
int age;
FILE * fp=fopen("friend.txt", "rt");
int ret;
while(1)
{
ret=fscanf(fp, "%s %c %d", name, &sex, &age);
puts("파일로부터 입력받습니다.");
printf("fscanf: %d, feof: %d, ftell: %dn", ret, feof(fp), ftell(fp));
if(ret==EOF)
break;
printf("%s %c %d n===================n", name, sex, age);
}
printf("fscanf: %d, feof: %d, ftell: %dn", ret, feof(fp), ftell(fp));
fclose(fp);
return 0;
}
fscanf의 반환값은 처리한 인자의 수다. \"이영호\", \'A\', 31를 스트림에서 차례로 읽은 것이고, 그 동작때문에 커서가 뒤로 밀려난 것이다.
ㄴ그러면 만약 fscanf가 성공적으로 인자들을 처리했다면, 파일끝에 도달하더라도 처리한 인자의 수를 반환하는 건가요?
그러함
ㄴ감사함