行数を数える #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; }