使用scanf()输入问题

时间:2014-09-25 03:17:31

标签: c scanf

我是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作为编译器。

4 个答案:

答案 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);

这会导致stdoutstderr在写入时立即刷新。

答案 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*/

与另一个相同