My program fails to recover the last JPEG. I see all the JPEGs but CS50 Check doesn't see the last file. I checked it with Valgrind and had no memory leaks. I suspect it has something to do with EOF but I'm not sure... The code is: (removed due to academic honesty) Any suggestions?

1 Answer 1


Maybe check50 does see the last image, but it is not correct! It likely has some "junk" at the end because of this while (!feof(inptr));. Your eyes cannot detect it, but check50 sure can. This short from last year's courseware describes the problem with this usage very well, starting around 7:30. As Jason explains:

....the purpose of feof is not to check if the next call to a read function will hit the end of the file, but rather to check whether or not the end of the file has already been reached. In the case of this example, reading the last line of our file goes perfectly smoothly, but the program doesn't yet know that we've hit the end of our file. It's not until it does one additional read that it counters the end of the file.

  • Thanks so much, I changed the while loop and it worked!
    – Endgament
    Commented May 26, 2017 at 7:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .