我正在使用Eclipse Indigo CDT并运行简单的代码:
#include <stdio.h>
void main()
{
int num;
printf("enter no\n");
scanf("%d",&num);
printf("no is %d\n",num);
}
输入:
55
enter no
no is 55
但是当我运行此代码时,它不会打印enter no
。而不是它等待输入数字。按下某个数字后,它将打印enter no
。可能是什么原因?
答案 0 :(得分:0)
这将取决于标准输出的冲洗方案。
传统上,当连接到终端时,stdout是行缓冲的,当它没有连接到终端时,页面缓冲。
显然,当您在eclipse中运行程序时,标准输出是页面缓冲的。
你可以通过刷新标准输出来解决这个问题:
#include <stdio.h>
void main()
{
int num;
printf("enter no\n");
fflush(stdout);
scanf("%d",&num);
printf("no is %d\n",num);
}
最好在希望信息的收件人响应时刷新文件句柄。这样,无论缓冲文件句柄如何,您都可以确保收件人获取您编写的所有内容。