我是一名新手程序员,他介绍了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;
}
当我运行代码时,控制台保持黑色,直到我停止调试。从来没有光标等待键盘输入。当我停止调试时,我可以在控制台中看到此输出,每次都相同:
打印userBookSelection:2130567168
我正在使用Windows上的MinGW GCC编译器在Eclipse中进行调试。代码语法似乎是正确的 - 我的构建路径中是否可能出现错误以实现此目的?我需要知道为什么scanf()没有读取键盘输入。
答案 0 :(得分:0)
所以我从我的教授处获得了一行代码来处理这个错误 - 它是否是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()如何从根本上发挥作用。