我有代码提示用户输入文件名,然后在控制台上显示文件的内容。但是,我使用的 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 中仍然存在。
最佳答案
尝试在第一个 printf 之后添加 fflush(stdout);
,我认为问题在于 printf
没有刷新它的缓冲区。
编辑:看起来这是一个 known bug in Eclipse ,解决方法是将缓冲区大小设置为零(检查代码的注释)。
关于c - printf 打印不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719297/