The feof() function doesn't report that it is at EOF until you try to read some data and there is no data to read.

You can seek beyond the current EOF of a file that's open for writing (or that's open for reading and writing).

See while (!feof(file)) is always wrong for more information on why you seldom if ever need to use feof(). In some ways, feof() is a function you should forget about — most of your programs will improve if you assume it doesn't exist.