setbuf

入出力バッファの設定

【書式】
#include <stdio.h>
void setbuf(FILE *fp, char *buf);

【説明】
setbuf関数を用いると、自動的に割り当てられる入出力バッファの代わりに、bufで指定した領域を使うことができます。
bufのサイズはstdio.hでマクロ定義されている「BUFSIZ」を用いて下さい。
また、bufに「NULL」を指定すると、バッファリングされず、直ちにデバイスやファイルに出力されます。
setbuf関数は、setvbuf関数の簡略形です。
 setbuf関数はfpをオープン直後かfseekをした直後に用いないと思わぬエラーの原因になるようです。

【引数】
FILE *fp  : FILEポインタ
char *buf : バッファの格納先

【戻り値】
なし

【使用例】
/* setbuf関数で出力バッファをユーザバッファに指定した例 */
#include <stdio.h>

int main(void)
{
        char buf[BUFSIZ];
        long l;
        
        /* 文字列を標準出力を使って出力 */
        printf("ABCDEFGHIJKLMN");
        
        /* 出力バッファをユーザバッファに指定 */
        setbuf(stdout,buf);
        
        /* 文字列をユーザバッファを使って出力 (処理系によっては直ちに出力)*/
        printf("ABCDEFGHIJKLMN");
        
        /* 出力しない。そのことを確認するために時間稼ぎの空ループ */
        for (l=0; l<1000000000; l++);
        
        /* fflushで初めて出力(処理系によっては'\n'で出力)*/
        fflush(stdout);
        
        return 0;
}
【実行結果】最初のA〜Nは即座に出力、次のA〜Nは空ループ終了後に出力(動作は処理系依存)
ABCDEFGHIJKLMNABCDEFGHIJKLMN

戻る


banner
初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved