0

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

平台:Window 7 编译器(IDE):Eclipse CDT

4

3 回答 3

3

刷新“标准输入”?printf 在“stdout”上运行。你的意思是冲那个吗?冲洗“stdin”没有意义。

于 2012-09-13T22:55:23.320 回答
2

首先,我同意胡说八道:fflush(stdin)是一件坏事。这里有进一步的解释。(如果9位经验丰富的程序员都告诉我我做错了什么,我会相信他们。)

现在,为了帮助您调试代码,您能告诉我们这个简化的代码在您的系统上是否存在同样的问题吗?

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Press any Key to exit: ");
    fflush(stdout);
    getchar();
}
于 2012-09-14T23:44:20.157 回答
0

如果您使用stderr(无缓冲)怎么办?这个对我有用。

void exit_Pro()
{
    fprintf(stderr, "Press any Key to exit: ");
    getchar();
}
于 2012-09-13T23:05:29.810 回答