tags:

views:

81

answers:

1

hi, I have a problem in a C program of mine where after I use fread(), the file pointer goes to the end of the file sometimes.

I'll try to explain better - the code looks something like:

dummy = ftell(fp);
fread(&buf, sizeof(unsigned char), 8, fp);
dummy = ftell(fp);

where fp is a file pointer to an opened file (opened it with "w+", I'm using it as a binary file and I know i'm supposed to have a "b" in there too, but I heard its not really important to add it..), dummy is just an unsigned long variable, and buf is unsigned char[8]

now, when debugging, at the ftell before the fread, dummy is 262062 at the ftell after the fread, dummy is 262640 even though I only 'moved' 8 bytes..

does anyone have any idea what can be the cause of this..? thanks for your help :)

+5  A: 

If you don't use the b to open the file, ftell() doesn't return the truth, just a sort of "cookie" that's only useful to fseek(). There are a lot of different implementations out there; check the man page for your system to find out more.

Carl Norum