C getc() function

C library function - getc()

This getc() function is used to read one unsigned character from the input stream at the current position and increases the file pointer, if any, so that it points to the next character in the input stream.


int getc(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, getc() 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 getc() shall return EOF.
  • If a read error occurs, the error indicator for the stream shall be set, getc() shall return EOF, and shall set errno to indicate the error.

Example: getc() function

In this example, a line of input is gathered from a stream.

#include <stdio.h>
#define  MAX_LEN  80
int main(void)
   FILE *fp;
   char buffer[MAX_LEN + 1];
   int i, ch;
    // Write some text in test.txt
    char str[] = "C Programming Tutorial and Exercises.";
    fp = fopen( "test.txt" , "w" );
    fwrite(str , 1 , sizeof(str) , fp );
   fp = fopen("test.txt","r");
   for (i = 0; (i < (sizeof(buffer)-1) &&
         ((ch = fgetc(fp)) != EOF) && (ch != '\n')); i++)
      buffer[i] = ch;
   buffer[i] = '\0';
   if (fclose(fp))
      perror("fclose error");
   printf("Text in the said file:\n%s\n", buffer);
Text in the said file: C Programming Tutorial and Exercises.


Text in the said file:
C Programming Tutorial and Exercises.

C Programming Code Editor:

Previous C Programming: C fputs()
Next C Programming: C putc()

Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

C Programming - What is the difference between char s[] and char *s?

The difference here is that

char *s = "Hello world";

will place "Hello world" in the read-only parts of the memory, and making s a pointer to that makes any writing operation on this memory illegal.

While doing:

char s[] = "Hello world";

puts the literal string in read-only memory and copies the string to newly allocated memory on the stack. Thus making legal.

s[0] = 'J';

Ref : https://bit.ly/2NDbgoX