【问题标题】:Why code is not printing anything as output?为什么代码不打印任何内容作为输出?
【发布时间】:2014-03-28 15:14:56
【问题描述】:

按 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;
}

【问题讨论】:

  • 讨厌成为那个人,但对我有用。您在 ctrl d 之前输入的确切顺序是什么?
  • 你用什么编译你的代码?
  • 您使用的是什么操作系统?什么终端?
  • 如果这在您的机器上不起作用,我建议您在 www.nitrous.io 上尝试此类示例(与我无关)。它在 linux 下对我来说很好用。
  • 发布您正在输入的内容。紧接在 Ctrl-D 之前的按键顺序很重要。

标签: c eof


【解决方案1】:

您在操作系统 (Windows 8) 上使用了错误的组合键来生成 EOF。 Ctrl+D常见于类unix系统,但Windows系统一般使用Ctrl+Z

请注意,如果您不在空行上,您可能必须使用 Ctrl+Z 两次(一次刷新当前输入行,一次刷新生成 EOF)。

【讨论】:

    【解决方案2】:

    最佳猜测——您输入的不是数字,因此scanf 返回 0,您的程序进入无限循环。由于您不显示您的输入,因此无法分辨。

    如果您希望它在非数字输入时停止,请将循环更改为 while(scanf("%d",&amp;a) &gt; 0)

    【讨论】:

      【解决方案3】:

      您应该检查文档以了解 scanf 的返回值...它返回扫描的项目数,0、1、2 等...不是 EOF

      【讨论】:

      • 其实,it returns either。如果发生读取错误,则返回 EOF,例如实际上正在处于 EOF 并且仍在尝试读取数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2016-05-02
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多