我是C的新手,所以我在使用scanf()时遇到了一些麻烦。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int height;
int weight;
printf("Enter height in inches:\n");
scanf("%d", &height);
printf("Enter weight in pounds:\n");
scanf("%d", &weight);
printf("You are %d inches tall and weigh %d pounds.", height, weight);
return 0;
}
我很确定这是正确的语法,但是当我运行它时,它显示一个空屏幕,在我输入2个数字后显示:
64
120
以英寸为单位输入身高:
以磅为单位输入体重:
你身高64英寸,重120磅。
根据一些教程,在我输入第二个数字之前,它应该显示“以英寸为单位输入高度:”,然后输入第一个数字和“以磅为单位输入重量:”。请帮帮我!
我正在使用Eclipse编写我的程序,如果相关,则使用MinGW作为编译器。
答案 0 :(得分:2)
尝试使用scanf_s
代替scanf,我只是运行它并且有效。
答案 1 :(得分:1)
它是一个bug in eclipse,大多数人都使用eclipse和MinGW进行过报道。
要解决此问题,您可以在每次致电fflush(stdout)
后使用printf
,或在main
的开头使用以下内容:
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
这会导致stdout
和stderr
在写入时立即刷新。
答案 2 :(得分:0)
我建议在Windows上使用Putty或在Mac OSX上使用命令行。使用“Wal Werror”编译器
是的,您需要等待它在输入数字之前显示输出。
E.g。你运行该程序 出现此行时
Enter height in inches:
然后输入
64
然后出现
Enter weight in pounds:
然后输入
120
然后输出应该符合预期
答案 3 :(得分:0)
我建议您使用scanf而不是scanf,并将fgets添加到顶部会更加逻辑。
这将是:
int height;
char buffer[32]; /*Add this to collect you data*/
printf("Enter height in inches:\n");
fgets(buffer,sizeof(buffer),stdin); /*Add this line to get value from keyboard*/
sscanf(buffer,"%d", &height); /*Change scanf to sscanf*/
与另一个相同