getchar()在printf()之前执行

时间:2012-09-13 22:36:34

标签: c

在我的简单程序中,当它执行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

3 个答案:

答案 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();
}