fgets reads one line at a time into a character buffer.

Read Lines

read_lines.c
#include <stdio.h>

int main(void) {
    int extraLine = ;
    FILE *file = fopen("read_lines_demo.txt", "w+");

    if (file == 0) {
        return 1;
    }

    fputs("alpha\n", file);
    fputs("beta\n", file);
    if (extraLine) {
        fputs("gamma\n", file);
    }

    rewind(file);

    char line[16];
    int lines = 0;
    while (fgets(line, sizeof line, file) != 0) {
        lines++;
    }

    fclose(file);
    remove("read_lines_demo.txt");

    printf("lines=%d\n", lines);
    return 0;
}
#include <stdio.h>

int main(void) {
    int extraLine = ;
    FILE *file = fopen("read_lines_demo.txt", "w+");

    if (file == 0) {
        return 1;
    }

    fputs("alpha\n", file);
    fputs("beta\n", file);
    if (extraLine) {
        fputs("gamma\n", file);
    }

    rewind(file);

    char line[16];
    int lines = 0;
    while (fgets(line, sizeof line, file) != 0) {
        lines++;
    }

    fclose(file);
    remove("read_lines_demo.txt");

    printf("lines=%d\n", lines);
    return 0;
}
line buffer The buffer limits how many characters one `fgets` call can store.
count lines The loop increments a counter for each successfully read line.