【发布时间】:2013-09-05 02:48:09
【问题描述】:
我一直在阅读“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 -
我在你的代码中没有看到
!= EOF -
您上面的代码将接受 '\n' 作为终止条件
-
请编辑您的问题,以便我们可以看到您正在运行的实际代码,这可能是指
EOF。复制并粘贴源代码;不要重新输入。while ((c = getchar()) != EOF)应该工作。您使用的是 Windows 还是 Unix/Linux?准确描述(在您的问题中,而不是在对此评论的回复中)您在运行程序时提供的输入。 -
我用putty连接到Ubuntu,对我来说CTRL+DD会发送一个EOF条件。