【问题标题】:Program does not terminate or comes back with an error for scanf function程序未终止或返回 scanf 函数错误
【发布时间】:2016-07-16 16:11:55
【问题描述】:

这个程序不会终止,也不会让我输入任何值,只是一个没有输出的黑屏。

#include <stdio.h>
#include <string.h>
#include <stdlib.h> 
int main()
{
    int size;
    printf("Enter number of elements in array:");
    scanf("%d", &size);
    printf("\n%d\n", size);
    return 0;
    }

【问题讨论】:

  • 至于第一个程序,您确实给它一些输入,然后用 Enter 键终止该输入?
  • 你想在这里做什么? int scanf("%d\n", &amp;size);
  • 无法复制。对我来说效果很好。
  • 由于这对我来说效果很好,这可能是您的终端的问题,或者实际上不是您尝试使用的代码。请仔细检查这是否真的是您正在编译的代码并且在不同的 shell 中运行该程序不起作用。
  • 注意,如果输入空行,scanf()不会返回;它会等到您输入整数或不可能是整数的东西(字母等)。如果你想要基于行的输入,不要使用scanf();请改用fgets()sscanf()。但是,对于导致程序“不终止”的原因,这是一个疯狂的猜测。

标签: c function scanf


【解决方案1】:

听起来你正在遭受缓冲。添加

    fflush(stdout);

printf 行之后。

默认情况下,如果 stdout 进入终端,它是行缓冲的,这意味着只有在缓冲区已满或输出换行符 (\n) 时才会实际写入输出。终止程序(通过exit() 或从main 返回)会关闭所有打开的文件句柄并强制刷新。

要确保立即生成输出,请致电fflush

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2021-08-09
    • 2012-05-15
    • 1970-01-01
    相关资源
    最近更新 更多