首页 > 解决方案 > 为什么 while 循环后的 printf() 不起作用?

问题描述

我是初学者,最近开始学习 C,这是我不明白的“Brian W. Kernighan, Dennis M. Ritchie 的 C 编程语言”中的一个示例。该程序应该计算输入中的新行并打印出最终结果。这与书中(第 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" 的值也不会重置。每次我输入内容时它都会增加,并且程序不会终止。

为什么示例不起作用?

标签: cwhile-loopprintf

解决方案


int main()
{
    int c, nl;

    nl = 0;
    while ((c = getchar()) != EOF)
        if (c == '\n')
            ++nl;
    printf("%d\n", nl);
  return 0;
}

我使用 Code::Blocks 在我的计算机上运行它,它运行得很好。也许你只是忘记了 main 之前的 int 并返回 0 ^^


推荐阅读