setbuf() — バッファリングの制御

フォーマット

#include <stdio.h>
void setbuf(FILE *, char *buffer);

言語レベル: ANSI

スレッド・セーフ: はい。

説明

オペレーティング・システムがユーザー定義のバッファーをサポートしている場合、 setbuf() は指定された stream のバッファリングを制御します。 setbuf() 関数は、統合ファイル・システムを使用する場合、ILE C でのみ機能します。 stream ポインターは、入出力または位置変更を行う前に、オープン・ファイルを指す必要があります。

buffer 引数が NULL の場合、stream はバッファーに入れられません。 そうでない場合、buffer は、長さが BUFSIZ の文字配列を指している必要があります。これは、<stdio.h> インクルード・ファイルで定義されたバッファー・サイズです。システムは、指定された stream のためのデフォルト・システム割り振りバッファーの代わりに、 入出力バッファリングのための buffer (ユーザーが指定) を使用します。 stdoutstderr、および 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 */
}

関連情報



[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]