2012-10-04 139 views
2

我有提示用户输入文件名的代码,然后在控制台上显示文件内容。但是,我使用的printf()语句直到最后才会打印出来,所以用户不知道输入文件名。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

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

编辑:它似乎是一个known bug in Eclipse,解决方法是将缓冲区大小设置为零(检查代码的注释)。

+0

是与stdout相关的吗?我认为scanf使用stdin? – Krypton

+1

我在程序中添加了该行,但它仍然不能在Eclipse中使用。 – nh0815

+1

@ nh0815然后,你可以尝试在你的printf之前添加'setvbuf(stdout,NULL,0,_IONBF)',看看它是否有效? – lccarrasco