【发布时间】:2013-09-22 08:22:17
【问题描述】:
所以我完全是 C 的新手。我正在使用 eclipse 和 MinGW 编译器。我在使用 scanf 和 printf 函数的第二章,我的程序正在运行,但只有在我将三个整数输入到 scanf 函数后才将语句打印到控制台。
#include <stdio.h>
int main(void){
int length, height, width, volume, dweight;
printf("Enter the box length: ");
scanf("%d", &length);
printf("\nEnter the box width: ");
scanf("%d", &width);
printf("\nEnter the box height");
scanf("%d", &height);
volume = length * width * height;
dweight = (volume + 165) / 166;
printf("Dimensions: l = %d, w = %d, h = %d\n", length, width, height);
printf("Volume: %d\n", volume);
printf("Dimensional Width: %d\n", dweight);
return 0;
}
控制台输出:
8 (user input + "Enter" + key)
10 (user input + "Enter" key)
12 (user input + "Enter" key)
Enter the box length:
Enter the box width:
Enter the box heightDimensions: l = 8, w = 10, h = 12
Volume: 960
Dimensional Width: 6
有什么见解吗?我希望它先 printf,然后再 scanf 进行用户输入,如下所示:
Enter the box length: (waits for user int input; ex. 8 + "Enter")
Enter the box width: ...
【问题讨论】:
-
尝试:在第一次 printf 之前调用
fflush(stdout) -
另外你应该检查scanf的返回值
-
您使用的是哪个编译器?它可以在 gcc 中正常工作。
-
代码在 GCC 4.7.1 上按预期工作。
-
fflush 在 printf 语句之后起作用