fgetc, getc - cppreference.com (original) (raw)

| Defined in header <stdio.h> | | | | --------------------------------------------------------------------------------------------- | --- | | | int fgetc( FILE* stream ); | (1) | | | int getc( FILE* stream ); | (2) | |

  1. Reads the next character from the given input stream.

  2. Same as fgetc, except that if getc is implemented as a macro, it may evaluate stream more than once, so the corresponding argument should never be an expression with side effects.

[edit] Parameters

stream - to read the character from

[edit] Return value

On success, returns the obtained character as an unsigned char converted to an int. On failure, returns EOF.

If the failure has been caused by end-of-file condition, additionally sets the eof indicator (see feof()) on stream. If the failure has been caused by some other error, sets the error indicator (see ferror()) on stream.

[edit] Example

#include <stdio.h> #include <stdlib.h>   int main(void) { const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL); int is_ok = EXIT_FAILURE;   FILE* fp = fopen(fname, "w+"); if (!fp) { perror("File opening failed"); return is_ok; } fputs("Hello, world!\n", fp); rewind(fp);   int c; // note: int, not char, required to handle EOF while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop putchar(c);   if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) { puts("End of file is reached successfully"); is_ok = EXIT_SUCCESS; }   fclose(fp); remove(fname); return is_ok; }

Possible output:

Hello, world! End of file is reached successfully

[edit] References

[edit] See also