Tôi nhận được một lỗi rất lạ khi cố gắng đọc từ một tệp văn bản đơn giản với c fread() gọi.
tôi đã thực hiện một chương trình rất đơn giản để chứng minh rằng lỗi:Tại sao ftell() hiển thị sai vị trí sau khi fread()?
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;
}
Và những gì tôi nhận được là đầu ra:
cur before=0
cur after reading 1000 bytes =1007
Có phải đó là bình thường không? fread trả về số '1000' nhưng con trỏ (với ftell()) hiển thị 1007 và mọi trợ giúp sẽ được đánh giá cao.
cảm ơn bạn, tôi không biết điều đó. Nhưng tôi không hiểu tại sao sự trở lại của fread() không giống như vị trí con trỏ? – ezzakrem
@ezzakrem Bởi vì 'fread' sẽ giải thích kết thúc của dòng (có thể là hai ký tự) như một ký tự, và báo cáo nó là một. –