gpt4 book ai didi

c - 如果不是从键盘, scanf() 从哪里读取输入?

转载 作者:行者123 更新时间:2023-11-30 16:41:59 25 4
gpt4 key购买 nike

我是一名刚刚接触 C 的新手程序员,但我缺少有关 scanf() 工作方式的一些基本知识。我想使用如下代码从键盘读取单个 int:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int userBookSelection;
scanf("%i", &userBookSelection);
printf("Printing userBookSelection: %i", userBookSelection);

return EXIT_SUCCESS;
}

当我运行代码时,控制台保持黑色,直到我停止调试。永远不会有光标等待键盘输入。当我停止调试时,我可以在控制台中看到此输出,每次都相同:

打印用户图书选择:2130567168

我正在 Windows 上使用 MinGW GCC 编译器在 Eclipse 中进行调试。代码语法似乎是正确的——我的构建路径中是否有可能出现问题导致这种情况发生?我需要知道为什么 scanf() 不读取键盘输入。

最佳答案

所以我从我的教授那里得到了一行代码来处理这个错误——我不确定它是否是 Eclipse 和/或 MinGW 特有的必要解决方案。无论如何,下面是带有附加行的代码:

int main(void) {
int userBookSelection;
setvbuf (stdout, NULL, _IONBF, 0);//<---The magic line

scanf("%i", &userBookSelection);
printf("Printing userBookSelection: %i", userBookSelection);

return EXIT_SUCCESS;
}

如果您能提供有关正在发生的事情、setvbuf() 正在做什么以及 scanf() 如何更根本地工作的更多智慧,我将不胜感激。

关于c - 如果不是从键盘, scanf() 从哪里读取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083170/

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