The reason for this statement is that feof
is still (initially) false when the end of the file has been reached -- it only becomes true after the first failed attempt to read past the end of the file.
Hence
char mychar;
while(!feof(fileptr))
{
fread(&mychar, sizeof(char), 1, fileptr);
fprintf(stderr, "The char is '%c'.
", mychar);
}
will process one char too many.
The correct way is to check the return value of fread
(or whatever function you're using to read) or, alternatively, to call feof
after the function that does the reading. For example:
char mychar;
while(fread(&mychar, sizeof(char), 1, fileptr) > 0)
fprintf(stderr, "The char is '%c'.
", mychar);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…