【发布时间】: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