Eclipse / MiniGW 中的 scanf 问题

Tyl*_*ock 3 c eclipse printf scanf

我试图在 Eclipse 中运行以下代码,但控制台保持空白,直到我停止程序,此时输出“输入下一个值(<=0 退出)2130567168 分钟是 35509452 小时 48 分钟。” 一遍又一遍地重复。

似乎 scanf 由于某种原因放入了一些默认值......无法弄清楚为什么。在程序停止之前我没有看到任何东西,所以我认为这可能与 printf 没有被刷新有关,但我确保使用 \n 来强制刷新。

有任何想法吗?

#include <stdio.h>
const int MIN_PER_HOUR = 60;  // minutes per hour

int main(void)
{
 int hour, min, left;

 printf("Convert minutes to hours and minutes!\n");
 printf("Enter the number of minutes (<=0 to Quit):\n");

 scanf("%d", &min);    // read number of minutes

 while(min > 0){
  hour = min / MIN_PER_HOUR; // truncated number of hours
  left = min % MIN_PER_HOUR; // number of minutes left over

  printf("%d minutes is %d hours, %d minutes.\n", min, hour, left);

  printf("Enter next value (<=0 to quit)");
  scanf("%d", &min);
 }
 printf("Done!\n");

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 5

Eclipse 的终端仿真器可能有所不同,并且会进行更多缓冲。尝试fflush(stdout);在打印输出和调用之间进行调用scanf()