setvbuf
This page is specific to:.NET Framework Version:1.12.03.54.0
ランタイム ライブラリ リファレンス
setvbuf

更新 : 2007 年 11 月

ストリームのバッファリングとバッファ サイズを制御します。

int setvbuf(
   FILE *stream,
   char *buffer,
   int mode,
   size_t size 
);
パラメータ

stream

FILE 構造体へのポインタ。

buffer

ユーザーが割り当てたバッファ。

mode

バッファリングのモード。

size

バッファ サイズ (バイト単位)。有効範囲は 2 <= size <= INT_MAX (2147483647) です。この値は、内部的には 2 の倍数に切り捨てられます。

戻り値

処理が正常に終了した場合は 0 を返します。

stream または bufferNULL ポインタの場合、または mode または size が有効な範囲内にない場合、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、この関数は -1 を返し、errnoEINVAL に設定します。

エラー コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。

解説

setvbuf 関数を使用すると、プログラムで stream のバッファリングとバッファ サイズを制御できます。stream は、まだ読み取りも書き込みも行われていない開いたファイルを指します。buffer が指す配列は、NULL でない限り、バッファとして使用されます。NULL の場合、setvbuf は自動的に割り当てられる長さ size/2 * 2 バイトのバッファを使用します。

mode は、_IOFBF_IOLBF、または _IONBF のいずれかにします。mode_IOFBF または _IOLBF の場合、バッファのサイズとして size が使用されます。mode_IONBF の場合、ストリームのバッファリングは行われないため、sizebuffer は無視されます。mode の値およびその意味は、次のとおりです。

_IOFBF

フル バッファリング。つまり buffer がバッファとして、size がバッファ サイズとして使用されます。bufferNULL の場合は、自動的に割り当てられた size バイトのバッファが使用されます。

_IOLBF

一部のシステムでは、行バッファリングを使用できます。ただし、Win32 の場合、動作は _IOFBF (フル バッファリング) と同じです。

_IONBF

buffersize に関係なく、バッファは使用されません。

必要条件

ルーチン

必須ヘッダー

setvbuf

<stdio.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

使用例

// crt_setvbuf.c
// This program opens two streams: stream1
// and stream2. It then uses setvbuf to give stream1 a
// user-defined buffer of 1024 bytes and stream2 no buffer.
//

#include <stdio.h>

int main( void )
{
   char buf[1024];
   FILE *stream1, *stream2;

   if( fopen_s( &stream1, "data1", "a" ) == 0 &&
       fopen_s( &stream2, "data2", "w" ) == 0 )
   {
      if( setvbuf( stream1, buf, _IOFBF, sizeof( buf ) ) != 0 )
         printf( "Incorrect type or size of buffer for stream1\n" );
      else
         printf( "'stream1' now has a buffer of 1024 bytes\n" );
      if( setvbuf( stream2, NULL, _IONBF, 0 ) != 0 )
         printf( "Incorrect type or size of buffer for stream2\n" );
      else
         printf( "'stream2' now has no buffer\n" );
      _fcloseall();
   }
}
'stream1' now has a buffer of 1024 bytes
'stream2' now has no buffer
.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

© 2009 Microsoft Corporation. All rights reserved.   使用条件 | 商標 | プライバシー
Page view tracker
ライトウェイト ライブラリについて評価してください。
x
ライトウェイトは、ユーザーの皆様からご要望をいただいた SearchBox と既定のコード言語選択の機能を追加することにより、ScriptFree (loband) に基づいています。
SearchBox は気に入りましたか。
タブ付きコード ブロックは気に入りましたか。
このトピックは役に立ちましたか。
ご意見やご感想をご自由にお書きください。
ありがとうございました。
x
MSDN Online を向上するためのご協力に感謝いたします。
フィードバック
ビューの切り替え
クラシック
ライトウェイト
ScriptFree
ビューの切り替え