std::fgetc, std::getc

Defined in header <cstdio>
int fgetc( std::FILE* stream );
int getc( std::FILE* stream );

Reads the next character from the given input stream.


stream - to read the character from

Return value

The obtained character on success or EOF on failure.

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


#include <cstdio>
#include <cstdlib>
int main()
    FILE* fp = std::fopen("test.txt", "r");
    if(!fp) {
        std::perror("File opening failed");
        return EXIT_FAILURE;
    int c; // note: int, not char, required to handle EOF
    while ((c = std::fgetc(fp)) != EOF) { // standard C I/O file reading loop
    if (std::ferror(fp))
        std::puts("I/O error when reading");
    else if (std::feof(fp))
        std::puts("End of file reached successfully");

See also

(deprecated in C++11)(removed in C++14)
reads a character string from stdin
writes a character to a file stream
puts a character back into a file stream

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.