0

この奇妙な動作を見たとき、私は何かをしようとしていました。誰か説明してくれませんか。

#include<stdio.h>
int main()
{
    printf("utkarsh");
    sleep(10);
    printf("dixit");
}

予想される出力は、「utkarsh」と出力され、10 秒待ってから、その横に「dixit」と出力されます。しかし、私が観察したのは、それが 10 秒間待機し、「utkarshdixit」が出力されることです。

utkarsh の最後に \n を追加すると、期待どおりに動作します。

printf("utkarsh\n");

なぜ私がそのような行動を見ているのかを誰かが理解するのを手伝ってくれますか?

4

4 に答える 4

5

あなたはバッファリングに遭遇しています。

やってみる

fflush(stdout);

眠りの前に

于 2012-07-11T08:15:09.483 に答える
2

printfは、書き込みを決定するまでバッファリングされます'\n'

:flushを使用して強制的に印刷できます

于 2012-07-11T08:16:27.697 に答える
2
Here, try this

#include<stdio.h>
int main()
{
    printf("utkarsh");
    fflush(stdout);
    sleep(10);
    printf("dixit");
}

標準出力のバッファリングが進行中です。明示的にフラッシュする必要があります。

于 2012-07-11T08:16:38.367 に答える
1

stdoutストリームにバッファリングがあります。したがって、寝る前に一度洗い流す必要があります。

ただし、「\ n」を使用した場合、cランタイムは自動的にstdoutバッファをフラッシュします。したがって、この動作が表示されます

于 2012-07-11T08:19:49.550 に答える