C printf打印不正确

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

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中问题仍然存在。

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

编辑:这似乎是一个问题,解决方法是将缓冲区大小设置为零(检查代码注释)。

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


编辑:这似乎是一个问题,解决方法是将缓冲区大小设置为零(检查代码注释)。

标准输出是否相关?我以为scanf使用stdin?我将该行添加到程序中,但它在Eclipse中仍然不起作用。@nh0815那么,您可以尝试添加
setvbuf(stdout,NULL,0,_IONBF)在你的printf之前,看看它是否有效?是否与stdout相关?我以为scanf使用stdin?我将该行添加到程序中,但它在Eclipse中仍然不起作用。@nh0815那么,您可以尝试添加
setvbuf(stdout,NULL,0,_IONBF)