私はwin8.164ビットEclipseLuna 4.4.0を使用していて、gcc 4.6.4でコンパイルしていますが、問題は次のとおりです。
この単純なプログラムでは、myステートメントprintf
とscanf
ステートメントがコンソールに間違った順序で表示されています。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
printf("Enter int: ");
scanf("%d",&i);
printf("Hello %d\n",i);
return EXIT_SUCCESS;
}
それはこれを行います:
4
intを入力してください:Hello 4
これの代わりに:
intを入力してください:4
こんにちは4
printf
バッファリングされます1。つまり、呼び出してもすぐには印刷されません。代わりに、印刷するように指示した内容が保存され、十分なテキストがバッファに保存されると自動的に印刷されます。
\n
printステートメントでafterを使用すると、バッファー全体が自動的にprintf
出力されます(これが、最後の呼び出しですべてが出力される理由です)。あなたの場合、あなたは手動フラッシュを使用したいかもしれませんfflush
printf("Enter int: "); fflush(stdout);
scanf("%d",&i);
printf("Hello %d\n",i);
1技術的には、stdout
これはバッファリングされますがprintf
、この時点でバッファリングされていると考える方が簡単です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加