使用scanf-function执行c程序时清空consolewindow

时间:2013-09-07 10:07:36

标签: c scanf

我对c语言很陌生。我有以下问题。

如果我使用scanf() - 函数,程序似乎无法正常执行。我正在使用Eclipse,控制台窗口是空的。但是 - 当我定义c程序时,一切都显示在控制台窗口中。

#include<stdio.h>
#include<conio.h>

void main()
{
  int i;
 char c;
 char s[10];
 float f;

 printf("Enter an integer number:");
 scanf("%d",&i);
 fflush(stdin);
 printf("Enter string:");
 scanf("%s",s);
 fflush(stdin);
 printf("Enter a floating number:");
 scanf("%f",&f);
 fflush(stdin);
 printf("Enter a character:");
 scanf("%c",&c);

 printf("\nYou have entered \n\n");
 printf("integer:%d \ncharacter:%c \nstring:%s \nfloat:%f",i,c,s,f);
 getch();
}

这是什么原因?

1 个答案:

答案 0 :(得分:3)

stdout写入的

printf()是行缓冲的,因此只有在遇到\n时才会刷新。

因此,要显示输入提示,您需要明确刷新stdout

printf("Enter an integer number:");
fflush(stdout);
scanf("%d", &i);

在程序缓冲区终止时,会隐式刷新程序缓冲区,这就是程序结束时控制台上出现printf()数据的原因。


但是,从您发布的来源,应该在执行此行之后将数据打印到控制台:

printf("\nYou have entered \n\n");

因为有\n。所以我假设你没有向我们展示确切的代码。