c fread() 호출로 간단한 텍스트 파일을 읽으려고 할 때 아주 이상한 오류가 나타납니다.왜 freell() 이후에 ftell()이 잘못된 위치를 표시합니까?
int main(int argc ,char ** argv) {
FILE* fh = fopen("adult.txt","r");
if(fh==NULL){
printf("error opening file\n");
exit(0);
}
int s = 1000;
printf("cur before=%d\n",ftell(fh));
char* b = malloc (sizeof(char)*s);
int k =fread(b,sizeof(char),s,fh);
printf("cur after reading %d bytes =%d\n",k,ftell(fh));
return EXIT_SUCCESS;
}
그리고 내가 무엇을 출력으로 얻을 :
cur before=0
cur after reading 1000 bytes =1007
정상인가요
은 그 오류를 표시하는 매우 간단한 프로그램을 만들어? fread는 숫자 '1000'을 반환하지만 커서 (ftell() 포함)는 1007을 보여 주므로 도움을 얻을 수 있습니다.
감사합니다. 나는 그것을 몰랐습니다. 하지만 왜 fread()의 반환 커서 위치와 동일하지 않습니다? – ezzakrem
@ezzakrem'fread'는 한 줄로 된 두 줄로 된 줄 끝을 하나의 문자로 해석하여 하나로보고합니다. –