我计算输入行数的代码似乎有效。这里是:
#include <stdio.h>
int main()
{
int counter = 0;
while(getchar() != EOF)
{
if(getchar() == '\n')
{
counter += 1;
}
}
printf("Counter: %d", counter);
return 0;
}
但我的问题是,为什么在 K&R 的书中,当仅在 while 循环条件下测试为真或假时,他们将 getchar 返回值存储在变量中?我认为没有理由这样做。
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 的返回值。