4
Contributors
3
Replies
7
Views
9 Years
Discussion Span
Last Post by molu mammen
2

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
0

"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"

http://www.cplusplus.com/reference/clibrary/cstdio/fread.html
http://www.cplusplus.com/reference/clibrary/cstdio/fgets.html

-2

#include<stdio.h>
main()
{
FILE *fp1;
char c;
//c=fgetc(fp1);

fp1=fopen("readdata.c","r");
if(fp1==NULL)
{
printf("\n Can't open file for reading");
//exit(1);
}
printf("\n The contents of the file is \n");
while((c = fgetc(fp1)) != EOF)
{
printf("%c",c);
}
fclose(fp1);
}

Votes + Comments
For bumping old threads! Man, are people just getting more stupid?
Congratulations, you've ressurected a more than one year old thread + posted some rubbish without code tags!
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.