【问题标题】:Scanf function doesn't run on visual studioScanf 函数无法在 Visual Studio 上运行
【发布时间】:2022-06-15 04:15:26
【问题描述】:

我一直试图在我的 Mac 上的 Visual Studio 上运行这个包含 scanf 的程序,但该程序从未运行。我也试过没有 & 的 scanf ,它仍然没有输出任何提示。有什么解决办法吗?

#include <stdio.h>

int main()
{
    int testInteger;
    printf("Enter an integer: ");
    scanf("%d", &testInteger);  
    printf("Number = %d",testInteger);
    return 1;
}

当我运行代码并停止它时,这就是我得到的全部

[Done] 在 11.983 秒内以 code=null 退出

【问题讨论】:

  • 尝试在第一个printf 之后添加fflush(stdout);。您可能误解了这种行为。 stdout 是行缓冲的,如果字符串中没有换行符或显式 fflush,可能不会实际显示任何输出。所以你可能认为它什么也没做。你能确认一下是不是这样吗?你试过输入一个数字然后按 ENTER 吗?
  • “Mac 上的 Visual Studio”听起来像“Visual Studio Code”,需要大量设置。你完成了所有的吗? code.visualstudio.com/docs/setup/mac
  • “当我运行代码并停止它时”是什么意思?你怎么阻止它?您是否尝试输入数字并按
  • 运行程序后如果只输入一个数字会怎样?
  • 为了让 SO 发挥最佳效果,您应该回复 cmets 并回答问题。请参阅How-to-ask:“发布问题并回复反馈 - 发布后,将问题在浏览器中打开一会儿,看看是否有人 cets。如果您错过了明显的信息,请准备好通过编辑进行回复你的问题包括它。“

标签: c


【解决方案1】:

printf() 之后添加fflush(stdout);。问题是,当您打印没有新行的提示时,提示消息被缓冲以供输出,直到输出\n,或者直到有足够的数据输出到标准输出流。由于这些都不会发生,您必须自己刷新缓冲区以获得一些输出。

如果你提供了一个数字(即使没有看到提示)程序会输出提示和提示后的结果行。如

$ a.out
34
Enter an integer: Number = 34$ _

(最后的$ _ 是新的提示符和光标,因为您的输出中没有包含任何换行符,所以屏幕上的输出会变坏,全部在一行中)

【讨论】:

    【解决方案2】:

    一个简单的解决方法是通过首选项进入 Visual Studio Code 设置。单击“扩展”并查找“运行代码配置”并选中“在终端中运行”旁边的框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2016-07-29
      • 2020-09-17
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多