4

c++ 用の Eclipse をインストールしたばかりですが、printf()関数に問題があります。私のコードは、「番号を入力してください」と出力することから始めるべきですが、そうではありません。4 と入力すると、次のようになります。

4

番号を与える:

私はナンバー1です

私は2番です

私は3番です

私は4番です
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n=0,i;
    printf("Give the number:\n");
    scanf("%d", &n);
    for(i=1;i<=n;i++)
        printf("I am number %d\n",i);
    return EXIT_SUCCESS;
}
4

1 に答える 1

0

バッファリング戦略には、次の 3 種類があります。

  • バッファリングされていないストリームに書き込まれたり読み取られたりした文字は、できるだけ早くファイルとの間で個別に送信されます。

  • 改行文字が検出されると、ライン バッファ ストリームとの間で読み書きされる文字は、ブロック単位でファイルとの間で送受信されます。

  • 完全にバッファリングされたストリームに書き込まれたり読み取られたりする文字は、任意のサイズのブロックでファイルとの間で送受信されます。

Daniel Fischer と Jonathan Leffler が指摘したように、端末は最初は完全にバッファリングされているようです。つまり、 を使用fflush(stdout);してストリームを端末に送信するか、setvbuf(stdout, 0, _IOLBF, 0);.

于 2013-03-27T18:26:02.380 に答える