入力された行数をカウントするための私のコードは機能しているようです。ここにあります:
#include <stdio.h>
int main()
{
int counter = 0;
while(getchar() != EOF)
{
if(getchar() == '\n')
{
counter += 1;
}
}
printf("Counter: %d", counter);
return 0;
}
しかし、私の質問は、なぜ K&R の本で getchar の戻り値が while ループ条件で true または false であるかのみがテストされるときに、変数に格納されているのですか? そうする理由はありません。
K&R のバージョン:
#include <stdio.h>
main()
{
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n') ++nl;
printf("%d\n", nl);
}
「int c」が getchar の戻り値を格納していることに注意してください。