在我的简单程序中,当它执行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
答案 0 :(得分:3)
冲洗“stdin”? printf在“stdout”上运行。你的意思是冲洗吗? 刷新“stdin”毫无意义。
答案 1 :(得分:2)
首先,我同意荒谬:fflush(stdin)
是一件坏事。这是further explanation。 (如果 9 经验丰富的程序员都告诉我我做错了什么,我会相信他们。)
现在,为了尝试帮助您调试代码,您能否告诉我们这个简化代码是否在您的系统上出现同样的问题?
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Press any Key to exit: ");
fflush(stdout);
getchar();
}
答案 2 :(得分:0)
如果使用stderr
(无缓冲)怎么办?它对我有用。
void exit_Pro()
{
fprintf(stderr, "Press any Key to exit: ");
getchar();
}