C fgetc() function

C library function - fgetc()

The fgetc() function is used to read a single unsigned character from the input stream at the current position and increases the associated file pointer, if any, so that it points to the next character.


int fgetc(FILE *stream)


Name Description Required /Optional
stream Identifies an address for a file descriptor, which is an area of memory associated with an input or output stream. Required

Return value

  • Upon successful completion, fgetc() shall return the next byte from the input stream pointed to by stream.
  • If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream shall be set and fgetc() shall return EOF.

Example: fgetc() function

The following example gathers a line of input from a stream:

#include <stdio.h>
#define  MAX_LEN  80 
int main(void)
   FILE *stream;
   char buffer[MAX_LEN + 1];
   int i, c;
   stream = fopen("test.txt","r");
   for (i = 0; (i < (sizeof(buffer)-1) &&
         ((c = fgetc(stream)) != EOF) && (c != '\n')); i++)
      buffer[i] = c;
   buffer[i] = '\0';
   if (fclose(stream))
      perror("fclose error");
   printf("Text from the file : %s\n", buffer);


Text from the file : C Language.

C Programming Code Editor:

Previous C Programming: C sscanf()
Next C Programming: C fgets()

Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

Reading a string with scanf :

An array "decays" into a pointer to its first element, so scanf("%s", string) is equivalent to scanf("%s", &string[0]). On the other hand, scanf("%s", &string) passes a pointer-to-char[256], but it points to the same place.

Then scanf, when processing the tail of its argument list, will try to pull out a char *. That's the Right Thing when you've passed in string or &string[0], but when you've passed in &string you're depending on something that the language standard doesn't guarantee, namely that the pointers &string and &string[0] -- pointers to objects of different types and sizes that start at the same place -- are represented the same way.

Ref : https://bit.ly/3pdEk6f