在我简单的程序,当它执行getchar
方法之前printf
方法执行。 为什么会发生这种情况,以及如何解决这个问题?的getchar()的printf之前执行()
#include <stdio.h>
#include <stdlib.h>
#define SUCCESS 0
void exit_Pro()
{
printf("Press any Key to exit: ");
fflush(stdin);
getchar();
}
int main(int argc, char **argv) {
atexit(exit_Pro);
return SUCCESS;
}
平台:窗口7 编译器(IDE):Eclipse的CDT
永远不要调用'fflush(stdin)' - 它是UB - 见[man fflush](http://www.manpagez.com/man/3/fflush/)。 –
是什么让你认为getchar在printf之前执行? printf首先执行,但你看不到输出,因为它是缓冲的。也许你的意思是'fflush(stdout)' –
你的代码在我的系统上编译并运行正常。不知道你为什么认为有问题。当你在系统上看到输出时,stdout缓冲可能会延迟吗? –