为什么代码不打印任何东西作为输出?(Why code is not printing anythin

2019-10-19 17:28发布

按Ctrl + d后,我期待这个代码打印阵列,但它什么都不做。

#include<stdio.h>

int main(){
    int k,i=0,a;
    int b[10];
    while(scanf("%d",&a)!=EOF){
        if(a>(a/4+a/3+a/2))
        b[i]=a;
        else
        b[i]=(a/4+a/3+a/2);
        i++;
    }
    for(k=0;k<=i;k++){
        printf("%d\n",b[k]);
    }
    return 0;
}

Answer 1:

您使用了错误的组合键来生成您的操作系统(Windows 8)的EOF。 按Ctrl + d是在类Unix系统中很常见,但Windows系统一般使用Ctrl + Z。

请注意,你可能有,如果你不是在一个空行用Ctrl + Z两次(一次刷新输入的电流线,而一旦产生EOF)。



Answer 2:

最佳答案-你输入的东西是不是一个数字,所以scanf返回0,且程序进入无限循环。 当你不显示自己的输入,这是不可能告诉。

如果你想让它停止在非数字输入,改变环路while(scanf("%d",&a) > 0)



Answer 3:

你应该检查scanf函数的返回值的文档...返回扫描,0,1,2,等等...不是EOF的项目数



文章来源: Why code is not printing anything as output?
标签: c eof