我在C中编写了两个程序来计算字符并打印值。
一个使用while循环,另一个使用。编译时没有报告错误,但都没有打印任何内容。
这是使用while的代码:
#include <stdio.h>
/* count characters and input using while */
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
这里的代码用于:
#include <stdio.h>
/* count characters and input using for */
main()
{
long nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%ld\n", nc);
}
编译和运行。
当我输入输入并按Enter键时,会打印一个空白换行符。当我在没有输入任何内容的情况下点击输入时,再次打印空白换行符。我认为至少应该打印零。
您需要终止程序的输入(即触发EOF测试)。
在大多数Windows命令窗口的新行开头,您可以使用Ctrl-D或Ctrl-Z在大多数unix终端上执行此操作。
或者,您可以从文件重定向stdin,例如:
myprogram < test.txt
另外,你应该给main一个返回类型;隐式int
已被弃用。
int main(void)
只有在看到文件结束(EOF)后才会输出您的程序。使用CTRL-D在UNIX上生成此文件,或使用CTRL-Z在Windows上生成此文件。
你在这里等待EOF字符(文件结尾)。这只会在两种情况下发生:
更好的方法是检查换行符。
让您的程序正常工作。按下回车键后,你必须确保你终止你的循环,以便程序正确flos。这可以通过键盘上的ctrl + Z来完成。这些是与EOF对应的键。
按键盘上的Enter键,将字符\n
添加到输入中。为了和程序打印出你需要添加“文件结束”(EOF)字符所需的字符数。
为了注入EOF字符,你应该在Unix上按CTRL-D
或在Windows上按CTRL-Z
。
您是否意识到换行符是普通字符,而不是EOF指示符?在大多数流行的操作系统上,EOF将是Ctrl-D或Ctrl-Z。