fgets() and fread() - What is the difference?

Alix Axel picture Alix Axel · May 1, 2010 · Viewed 32.4k times · Source

I understand the differences between fgets() and fgetss() but I don't get the difference between fgets() and fread(), can someone please clarify this subject? Which one is faster? Thanks!

Answer

Pascal MARTIN picture Pascal MARTIN · May 1, 2010

fgets reads a line -- i.e. it will stop at a newline.

fread reads raw data -- it will stop after a specified (or default) number of bytes, independently of any newline that might or might not be present.


Speed is not a reason to use one over the other, as those two functions just don't do the same thing :

  • If you want to read a line, from a text file, then use fgets
  • If you want to read some data (not necessarily a line) from a file, then use fread.