1

我对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();
}

这是什么原因?

4

1 回答 1

3

stdout写入的,printf()是行缓冲的,所以它只在遇到\n.

所以要让你的输入提示出现,你需要明确地刷新stdout

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

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


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

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

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

于 2013-09-07T10:15:42.163 回答