【问题标题】:Running a simple C program using VS code使用 VS 代码运行一个简单的 C 程序
【发布时间】:2021-09-08 10:26:53
【问题描述】:

我最近开始学习 C 课程,但在运行一个简单的 I/O 程序时遇到了一些困难:

#include <stdio.h>

int main()
{
    int age;
    printf("Please enter your age: ");
    scanf("%d\n", age);
    printf("Your age is: %d", age);
    return 0;
}

问题是程序确实开始运行,但它永远不会停止,它不允许我输入年龄,甚至没有打印出“请输入您的年龄:”这句话。 我安装了 gcc、g++ 和 gdb,如果我删除“scanf”,一切正常。

非常感谢您的帮助! 谢谢!

【问题讨论】:

  • 与您的问题无关,但您的scanf 格式字符串中没有尾随空格字符(如\n)。它几乎永远不会按预期工作。
  • 在许多系统中,stdout 是行缓冲的。这意味着输出不会刷新到您的终端,除非打印 \n 或手动刷新 stdout。因此,程序可能已准备好接受您的输入,但您只是看不到任何要求您这样做的文本。尝试在printfs 末尾添加\n。对于快速测试,您可以直接开始输入您的年龄,而无需等待提示消息。
  • 您可以在适应 cmets 和现有答案后添加当前版本的代码。只需编辑您的问题并添加以下代码即可。
  • 你是如何构建的?你怎么跑?涉及哪些命令?你有任何输出吗,例如Visual Studio Code,在任何地方的任何选项卡中?当您尝试运行程序时是否会打开一个新窗口(但可能已最小化或隐藏在其他窗口后面)?请edit您的问题尽可能详细地提供。
  • 另外,请在每次printf 通话后尝试拨打fflush(stdout)

标签: c visual-studio-code io


【解决方案1】:

您需要在扫描时在变量名前添加&amp; 符号。检查为什么here

scanf("%d\n", &amp;age);

【讨论】:

  • 尝试删除\n
【解决方案2】:

工作代码

#include <stdio.h>

int main()
{
    int age;
    printf("Please enter your age: ");
    fflush(stdout); // Prints to screen or whatever your standard out is
    scanf("%d", &age);
    printf("Your age is: %d\n", age);
    fflush(stdout); // Prints to screen or whatever your standard out is
    return 0;
}

我运行它,它按预期工作。如果您使用的是 linux 操作系统,请按照以下命令编译运行。

gcc age.c
./a.out

请访问here了解更多关于c中scanf函数的信息。

【讨论】:

猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 2017-01-28
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多