当我准确输入时,K&R 中的某些示例在 Code:Blocks 中不起作用。 例如这个程序:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
当我输入这段代码并运行它时,当我按下 enter 时,程序要么卡住,要么什么都不做。
下面的程序做同样的事情(计算字符串中的字符数)并且有效。
#include <stdio.h>
int main()
{
char s[1000];
int i;
scanf("%s",s);
for(i=0; s[i]!='\0'; ++i);
printf("Length of string: %d",i);
return 0;
}
我是不是漏掉了什么?自 K&R 第 2 版以来,C 是否发生了变化,还是我做错了什么?
最佳答案
当您按下回车键时,您将 \n
发送到标准输入流(并将其他数据刷新到 stdin
,如果有的话)。此字符 (\n
) 不与 EOF
相同。要发送 EOF
,请按以下组合键:
- CTRL Z 然后在 Windows 中 Enter。
- CTRL D 在 Unix/Linux/OSX 中
关于c - 为什么来自 K&R 的某些代码在代码 :Blocks? 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746522/