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 に答える