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

Recommended Answers

All 3 Replies

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"

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

#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);
}

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

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.