C Read Text File

Summary: in this tutorial, you will learn how to read from a text file using standard library functions such as fgetc() and fgets().

Steps for reading from a text file

To read from a text file, you follow these steps:

  • First, open the text file using the fopen() function.
  • Second, use the fgets() or fgetc() function to read text from the file.
  • Third, close the file using the fclose() function.

Reading from a text file one character at a time

To read from a text file one character at a time, you use the fgetc() function.

The following program reads from the readme.txt file one character at a time and display the file contents to the output:

#include <stdio.h>

int main()
{
    char *filename = "readme.txt";
    FILE *fp = fopen(filename, "r");

    if (fp == NULL)
    {
        printf("Error: could not open file %s", filename);
        return 1;
    }

    // read one character at a time and
    // display it to the output
    char ch;
    while ((ch = fgetc(fp)) != EOF)
        putchar(ch);

    // close the file
    fclose(fp);

    return 0;
}Code language: C++ (cpp)

Reading from a text file line by line

To read a line from a text file, you use the fgets() function:

char * fgets ( char *str, int num, FILE *stream );Code language: C++ (cpp)

The fgets() function reads characters from the stream and store them into the str.

The fgets() function stops reading if:

  • num-1 characters have been read
  • the newline character or end-of-file character reached.

Note that the fgets() function also includes the newline character in the str.

The following example shows how to use the fgets() function to read a text file line by line and display the text to the output:

#include <stdio.h>

int main()
{
    char *filename = "readme.txt";
    FILE *fp = fopen(filename, "r");

    if (fp == NULL)
    {
        printf("Error: could not open file %s", filename);
        return 1;
    }

    // reading line by line, max 256 bytes
    const unsigned MAX_LENGTH = 256;
    char buffer[MAX_LENGTH];

    while (fgets(buffer, MAX_LENGTH, fp))
        printf("%s", buffer);

    // close the file
    fclose(fp);

    return 0;
}Code language: C++ (cpp)

Summary

  • Use the fgetc() function to read from a text file, a character at a time.
  • Use the fgets() function to read from a text file, line by line.
Was this tutorial helpful ?