フォーマット
#include <stdio.h> void setbuf(FILE *, char *buffer);
言語レベル: ANSI
スレッド・セーフ: はい。
説明
オペレーティング・システムがユーザー定義のバッファーをサポートしている場合、 setbuf() は指定された stream のバッファリングを制御します。 setbuf() 関数は、統合ファイル・システムを使用する場合、ILE C でのみ機能します。 stream ポインターは、入出力または位置変更を行う前に、オープン・ファイルを指す必要があります。
buffer 引数が NULL の場合、stream はバッファーに入れられません。 そうでない場合、buffer は、長さが BUFSIZ の文字配列を指している必要があります。これは、<stdio.h> インクルード・ファイルで定義されたバッファー・サイズです。システムは、指定された stream のためのデフォルト・システム割り振りバッファーの代わりに、 入出力バッファリングのための buffer (ユーザーが指定) を使用します。 stdout、stderr、および stdin は、ユーザー定義のバッファーをサポートしません。
setvbuf() 関数は、setbuf() 関数より柔軟です。
戻り値
戻り値はありません。
setbuf() の使用例
この例では、書き込みのためにファイル setbuf.dat をオープンします。 その後、setbuf() 関数を呼び出して、長さが BUFSIZ のバッファーを設定します。 ストリームに string が書き込まれると、バッファー buf が使用されます。 このバッファーには、それがファイルにフラッシュされるまで、ストリングが含まれます。
#include <stdio.h> int main(void) { char buf[BUFSIZ]; char string[] = "hello world"; FILE *stream; memset(buf,'¥0',BUFSIZ); /* initialize buf to null characters */ stream = fopen("setbuf.dat", "wb"); setbuf(stream,buf); /* set up buffer */ fwrite(string, sizeof(string), 1, stream); printf("%s¥n",buf); /* string is found in buf now */ fclose(stream); /* buffer is flushed out to myfile.dat */ }
関連情報