我一直在阅读《C程序设计语言》这本书,看到了有关输入和输出的部分。
我看到其他帖子中提到控制台无法将回车识别为
我还看到其他人也问过同样的问题,他们可以使其工作,但问题在于代码语法而非程序未终止。
是否有其他解决方案?
以下是代码:
编辑:本来
它也不适用于
我看到其他帖子中提到控制台无法将回车识别为
EOF
,因此我应该在Windows中使用CTRL + Z,在Unix中使用CTRL + D(这两个都对我不起作用)。我还看到其他人也问过同样的问题,他们可以使其工作,但问题在于代码语法而非程序未终止。
是否有其他解决方案?
以下是代码:
#include <stdio.h>
main()
{
int nb, nl, nt, c;
nb = 0;
nl = 0;
nt = 0;
while ((c = getchar()) != '\n') {
if (c == ' ')
++nb;
else if (c == '\n')
++nl;
else if (c == '\t')
++nt;
}
printf("Input has %d blanks, %d tabs, and %d newlines\n", nb, nt, nl);
}
编辑:本来
\n
应该是一个 EOF,我在发布之前进行了一些操作,然后忘记更改它了 :P它也不适用于
EOF
,我只是跳过了那个。
(c = getchar()) != '\n')
中,\n
应该被替换为 EOF。 - Grijesh Chauhan!= EOF
。 - user93353EOF
。复制并粘贴源代码;不要重新输入它。while ((c = getchar())!= EOF)
应该能够正常工作。您是在Windows还是Unix / Linux上?在您运行程序时,请在问题中(而不是在回复此评论中)描述您正在输入的确切内容。 - Keith Thompsonstty eof
设置的eof字符时触发。该字符默认为^D
,可以通过stty -all
显示为eof = ^D;
。 - U. Windl