如何在程序中输入数据来计算输入的字符?

时间:2010-07-21 21:43:23

标签: c

我用C编写了两个程序来计算字符并打印值。

一个使用while循环,另一个使用。编译时没有报告错误,但都没有打印任何内容。

以下是使用时的代码

#include <stdio.h>

/* count characters and input using while */
main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

这是使用 for 的代码:

#include <stdio.h>

/* count characters and input using for */
main()
{
    long nc;

    for (nc = 0; getchar() != EOF; ++nc)
        ;
    printf("%ld\n", nc);
}

编译并运行。

当我输入输入并按Enter键时,会打印一个空白换行符。当我在没有输入任何内容的情况下点击输入时,再次打印空白换行符。我认为至少应该打印零。

6 个答案:

答案 0 :(得分:5)

您需要终止程序的输入(即触发EOF测试)。

在大多数Windows命令窗口的新行开头,您可以使用Ctrl-D或Ctrl-Z在大多数unix终端上执行此操作。

或者,您可以从文件重定向stdin,例如:

myprogram < test.txt

另外,你应该给main一个返回类型;不推荐使用隐式int

int main(void)

答案 1 :(得分:1)

您的程序只会在看到文件结束(EOF)后输出。使用CTRL-D在UNIX上生成此文件,或使用CTRL-Z在Windows上生成此文件。

答案 2 :(得分:1)

您在这里等待EOF字符(文件结尾)。这只会在两种情况下发生:

  • 用户按下Ctrl + Break(这似乎适用于Windows,但我不会指望这一点)。

  • 用户输入EOF字符(例如,可以使用Ctrl + Z完成)。

更好的方法是检查换行符。

答案 3 :(得分:1)

让您的程序正常运行。按输入键后,你必须确保你终止你的循环,以便程序flos正确。这可以通过键盘输入 ctrl + Z 来完成。这些是与EOF相对应的键。

答案 4 :(得分:0)

按键盘上的Enter键,将字符\n添加到输入中。为了和程序打印出你需要添加“文件结束”(EOF)字符所需的字符数。

要注入EOF字符,您应该在Unix中按CTRL-D或在Windows上按CTRL-Z

答案 5 :(得分:0)

您是否意识到换行符是普通字符,而不是EOF指示符?在大多数流行的操作系统上,EOF将是Ctrl-D或Ctrl-Z。