gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:29:58 25 4
gpt4 key购买 nike

我在 Windows 10 x86 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
Enter an amount: With tax added: $3.15

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

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

最佳答案

ISO/IEC 9899:201x:

Files

… When a stream is line buffered, characters are intended to be transmitted to or from the host environment as a block when a new-line character is encountered. …

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

try printf("Enter an amount: ");fflush(stdout); – BLUEPIXY

That worked! Is this only necessary because I'm using the standard output as my run console?

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

And if so, should I just put it at the beginning of any program that will use a function accessing the buffer?

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

关于c - Netbeans 8.1 scanf() 函数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37382336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com