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

Where in memory variables stored in C:

You got some of these right, but whoever wrote the questions tricked you on at least one question:

  • global variables -------> data (correct)
  • static variables -------> data (correct)
  • constant data types -----> code and/or data. Consider string literals for a situation when a constant itself would be stored in the data segment, and references to it would be embedded in the code
  • local variables(declared and defined in functions) --------> stack (correct)
  • variables declared and defined in main function -----> heap also stack (the teacher was trying to trick you)
  • pointers(ex: char *arr, int *arr) -------> heap data or stack, depending on the context. C lets you declare a global or a static pointer, in which case the pointer itself would end up in the data segment.
  • dynamically allocated space(using malloc, calloc, realloc) --------> stack heap

It is worth mentioning that "stack" is officially called "automatic storage class".

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

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook