2

我有代码提示用户输入文件名,然后在控制台上显示文件的内容。但是,我使用的 printf() 语句直到最后才会打印出来,因此用户不知道输入文件名。

int main(int argc, char * argv[]){
printf("%s", "What file would you like to open?\t");
char filename[100];
scanf("%[^\n]", filename);
printf("You chose:\t%s\n", filename);
return 0;
}

该程序当前扫描控制台,然后打印出两个 printf() 语句。scanf() 语句正常工作,只是不是在正确的时间。知道我的问题是什么吗?

编辑:程序从命令行运行时可以正常工作,但问题在 Eclipse 中仍然存在。

4

1 回答 1

4

尝试fflush(stdout);在第一个 printf 之后添加,我认为问题在于printf不刷新它的缓冲区。

编辑:这似乎是Eclipse 中的一个已知错误,解决方法是将缓冲区大小设置为零(检查代码的注释)。

于 2012-10-04T01:54:28.057 回答