Linux のマニュアルでは、このfflush
機能を使用しないことを推奨しています。
while( getchar() != '\n'
それで、が と同じ役割を果たすことがわかりましたfflush(stdin)
。
例えば)
私の試用コード:
#include <stdio.h>
void main(void)
{
char input[100] = {};
printf("abcd");
while(1);
}
上記のコードを Linux (Ubuntu) で実行すると、結果は何もありません。は文字列に含まれていないため\n
です。stdout
したがって、バッファを空にしてそれらを出力する必要があります。
奇妙な現象は、どちらかgetc(stdout)
またはを使用すると、結果がうまく印刷されることgetc(stdin)
です。
#include <stdio.h>
void main(void)
{
char input[100] = {};
printf("abcd");
getc(stdout); // or getc(stdin); both working well.
while(1);
}
なぜ両方がうまくいっているのかわかりません。私は、キーボード バッファーとモニター バッファーgetc(stdout)
を考えているので、うまく動作するはずだと思っていました。stdin
stdout