我对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();
}
这是什么原因?
答案 0 :(得分:3)
stdout
写入的 printf()
是行缓冲的,因此只有在遇到\n
时才会刷新。
因此,要显示输入提示,您需要明确刷新stdout
:
printf("Enter an integer number:");
fflush(stdout);
scanf("%d", &i);
在程序缓冲区终止时,会隐式刷新程序缓冲区,这就是程序结束时控制台上出现printf()
数据的原因。
但是,从您发布的来源,应该在执行此行之后将数据打印到控制台:
printf("\nYou have entered \n\n");
因为有\n
。所以我假设你没有向我们展示确切的代码。