【发布时间】:2021-09-08 05:01:05
【问题描述】:
我是初学者,我最近开始学习 C,这里是“The C Programming Language by Brian W. Kernighan, Dennis M. Ritchie 中的一个示例,我没有理解。该程序应该计算输入中的新行并打印出最终结果。这与书中(第 19 页)中的程序完全相同。它的输出什么都没有。我可以永远输入,它只是换行......
main()
{
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
如果我将 "printf("%d\n", nl)" 语句放在 if 语句的主体中,则每次都会在新行上打印输出,并且 "nl" 的值不会重置。每次我输入内容时它都会增加,并且程序不会终止。
为什么这个例子不起作用?
【问题讨论】:
-
您需要向您的程序发送换行符。对于 macOS 或 Linux,请按 Ctrl-D。对于 Windows,请按 Ctrl-Z。
-
它应该如何检测 EOF?
-
你使用的是什么操作系统?
-
@johnelemans 我没有在这里写“#include
”部分...我的错误,对不起... -
@iBug 你的意思是EOF,而不是换行符?
标签: c while-loop printf