I’m getting a very strange error while trying to read from a simple text file with c fread() call.
I made a very simple program to show that error:
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;
}
And what I get as output:
cur before=0
cur after reading 1000 bytes =1007
Is that normal? fread return the number ‘1000’ but the cursor (with ftell()) shows 1007 and any help will be appreciated.
That’s normal.
'\n'can be represented with two characters, so there is the skew you are getting.If you don’t want that to happen, open the finaly in binary mode.