我是新来的,至少提问。一直都能在这里找到好的答案。试图回到编程和重新学习C但遇到了奇怪的问题。
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld \n", nc);
}
当我运行它时,在输入任意数量的字符并按下回车键后,它不会打印nc的值。 点击进入后,我可以再次开始打字,同样的故事。真的看不出有什么不对。唯一可行的方法是将++ nc和printf放在括号内。但是当我按下回车键时,它会给出1到nc的值,这不是我想要的。我只想要nc。 毋庸置疑,这种类型也不是问题。 提前致谢
答案 0 :(得分:7)
在终端输入Ctrl-D
以发送EOF
。你可能想要
while (getchar() != '\n')
相反,如果你想让它与enter一起使用。
答案 1 :(得分:3)
您需要按Ctrl-D才能获得EOF。
答案 2 :(得分:1)
尝试
while(getchar()!='\ n') NC ++;
编辑:假设输入来自控制台,'\ n'就足够了。
答案 3 :(得分:0)
如果你只想在循环中打印nc,你应该在循环中包含print语句,如下所示:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF) {
++nc;
printf("%ld \n", nc);
}
}
在按下[enter]后为每个角色打印一次nc,可能不是你想要的。
如果你想每行打印一次nc,请使用scanf并执行:
#include <stdio.h>
#include <string.h>
main()
{
long nc;
nc = 0;
char buf[128];
while (scanf("%s",&buf) > 0) {
int len = strlen(buf);
nc += len;
printf("%ld \n", nc);
}
}