行数を数える #2

少し修正。
最初に一文字分読み込むことでデータサイズが0かどうかに関連するちょっとした無駄を無くす。
混乱を避けるためbool_t型にTRUEはない。FALSEであるか否かでブール値を表す。

#include <stdio.h>

typedef enum { FALSE = 0 } bool_t;

int main(void)
{
    unsigned long nlines = 0L;
    bool_t succeeded_eol = FALSE;
    int c = getchar();
    if (c != EOF) {
        do {
            succeeded_eol = c == '\n';
            if (succeeded_eol) ++nlines;
        } while ((c = getchar()) != EOF);
        if (! succeeded_eol) ++nlines;
    }
    printf("%lu\n", nlines);
    return 0;
}