【发布时间】:2018-06-26 18:24:34
【问题描述】:
#include <stdio.h>
int main() {
int c;
while(getchar() != EOF) {
if (getchar() == ' ') {
c++;
}
printf("%i", c);
}
}
我意识到输入一个与您正在阅读的句子一样的句子
我\n意识到\n那个\n打字\nin\n\a\n ...
我相信这就是它的读取方式,getchar() 没有到达 EOF 以使 while 括号中的条件为假..
我的目标是制作一个接受我输入的程序.. 读它 如果有空格 它依靠计数器 到达 EOF 时 继续阅读的条件变为假 计数器值打印在屏幕上 向我展示我的整个输入中有多少个空格..
不可能吗?这就是人们为什么只使用 scanf() 的原因吗?
这是我尝试某事时得到的输出
user@user:/c# ./a.out
hello stackoverflow this does not do what i want it to
001111111222223344445666677
【问题讨论】:
-
您知道
c没有定义值,对吧?并不是每个人都使用scanf。它通常不是读取用户输入的最佳解决方案。 -
在 linux 终端中,
CTRL-d我相信应该在文件末尾发送。 -
在某些 Windows 环境中,一个 CTRL-z.
-
你为什么用
getchar阅读两次?你永远不会设置c。while((c = getchar()) != EOF) {...}或类似的东西,因为您不会注意到所阅读的内容。 -
到目前为止,没有人说“你错了,去检查你的代码”。