what is the difference between fread() and fgets()?

fgets reads a single line of characters, but fread reads a block of unidentified objects. fgets uses '\n' as a delimiter, but fread doesn't inspect any of the objects so it relies on a limit of the number of objects. If you're using fread to read string data, the only two significant differences are:

  1. fgets terminates the string with '\0', but fread does not
  2. fgets uses '\n' as a delimiter as well as an upper limit, but fread only uses an upper limit

"fgets" is essentially a simplified version of "fread".

"fgets" is good for (and should only be used for) reading character strings from an input stream, be it a file or the stdin device.

"fread" is suited for any data type, such as binary (hex) data. it gives you more rope to hang yourself with, so if you're just wanting to read ascii text, stick with "fgets"


FILE *fp1;
char c;

printf("\n Can't open file for reading");
printf("\n The contents of the file is \n");
while((c = fgetc(fp1)) != EOF)

commented: For bumping old threads! Man, are people just getting more stupid? +0
commented: Congratulations, you've ressurected a more than one year old thread + posted some rubbish without code tags! -1