当前位置: 首页 > 知识库问答 >
问题:

Netbeans 8.1 scanf()函数无法正常工作

翟越
2023-03-14

我在Windows10x86 64位计算机上运行Netbeans 8.1,我已经完成了项目的运行

int main(void){

float original_amount, amount_with_tax;

printf("Enter an amount: ");
scanf("%f", &original_amount);
amount_with_tax = original_amount * 1.05f;
printf("With tax added: $%.2f\n", amount_with_tax);

exit(EXIT_SUCCESS);
}

这里是输出:

3
输入金额:含税:3.15美元

运行成功(总时间:4s)

如您所见,扫描功能在程序甚至打印“输入金额:”之前读取数字。另外,在我注释掉scanf函数之后,它按预期打印了两条printf语句。我已经努力解决这个问题一段时间了,非常感谢您的帮助,谢谢!

共有1个答案

龙承颜
2023-03-14

ISO/IEC 9899:201x:

...当流被行缓冲时,当遇到新行字符时,字符将作为块传输到或从主机环境传输。...

您的标准输出流似乎是行缓冲的,这是最常见的。

尝试printf(输入金额:); fflush(stdout);-BLUEPIXY

那起作用了!这仅仅是因为我使用标准输出作为我的运行控制台吗?

不,程序打开的其他流甚至可能被完全缓冲。

如果是这样,我应该把它放在任何使用函数访问缓冲区的程序的开头吗?

fflush(stdout)放在程序的开头是不行的,因为它只输出一次已经在stdout缓冲区中的内容。但是您可以在那里使用setbuf(stdout,NULL)。

 类似资料:
  • 问题内容: 以下是我的脚本: 它显示以下错误: 我该如何处理? 谢谢 问题答案: 我已经安装了SSH2 PECL扩展程序,它的工作正常,谢谢大家的帮助…

  • 我有这个节点js函数,一旦对节点列表进行添加/更新/删除,就会尝试更新Algolia索引 这是我的错误 TypeError:无法在对象的exports.indexlisting_algolia.functions.database.ref.onWrite(/user_code/index.js:807:40)读取未定义的属性“val”。(/user_code/node_modules/fireba

  • 问题内容: 因此,我的设置无法按我想要的方式工作。因此,每当我运行该程序时,它就会立即从0变为100。我尝试使用,任务,并尝试了,但没有任何尝试。 这是我的程序: @MadProgrammer这是我尝试做一名摆动工作人员并将每个名称写入文档并更新进度栏的尝试。该程序将达到86%左右并停止运行,永远不会创建完成的文档。该程序将创建一个空白文档。这是我首先创建的SwingWorker对象,这是两种方法

  • 问题内容: 我在JLayeredpane上有两个JPanels。其中一个显示pdf,重叠的一个具有透明背景(我使用过setOpaque(false))。现在,我可以将图形添加到透明面板中,这样看来我实际上是在注释pdf。我想要一个橡皮擦工具来删除这些注释。我尝试使用以下代码 其中path是由多条线构成的形状。现在,不是在先前的图形上绘制 透明线 ,而是绘制 黑线 。我要去哪里错了? 问题答案: 请

  • 问题内容: 这看起来有效,但无法正常工作。我希望菜单悬停时’huh’div不透明。我尝试了淡入/淡出效果,但效果很好,但只有一次很奇怪。 问题答案: 不带点使用:

  • 问题内容: 我正在编辑从tesseract ocr获得的一些电子邮件。 这是我的代码: 但是输出不正确。 输入: 输出: 但是,当我在每次替换后将结果分配给新的String时,它都能正常工作。为什么在同一字符串中连续分配不起作用? 问题答案: 您将在Javadoc中的String.replaceAll()中注意到,第一个参数是正则表达式。 句点()和管道()以及花括号()都有特殊的含义。您需要对它