_fdopen、_wfdopen

これまで低水準入出力用に開かれたファイルにストリームを関連付けます。

FILE *_fdopen(  
   int fd,
   const char *mode 
);
FILE *_wfdopen( 
   int fd,
   const wchar_t *mode 
);

パラメーター

  • fd
    開いているファイルのファイル記述子。

  • mode
    ファイル アクセスの種類。

戻り値

これらの関数を開いているストリームにポインターを返します。エラーが発生すると、NULL のポインター値を返します。エラーが発生すると、無効なパラメーター ハンドラーで説明されているように呼び出され、 パラメーターの検証。続行するには、実行が許可された場合は、 errnoいずれかに設定されているEBADF、無効なファイル記述子を示しますまたはEINVALを示しますmode null ポインターが。

これらおよびその他のエラー コードの詳細についてを参照してください _doserrno、errno、並べ、および _sys_nerr

解説

_fdopenによって識別される、ファイルの I/O ストリームを関連付ける関数fdとバッファリングされ、書式設定するには、低水準入出力用に開かれているファイルします。_wfdopen 関数は、_fdopen 関数のワイド文字バージョンです。_wfdopen 関数の引数 mode は、ワイド文字列です。_wfdopen_fdopenそれ以外の場合は同様に動作します。

汎用テキスト ルーチンのマップ

Tchar.h のルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tfdopen

_fdopen

_fdopen

_wfdopen

mode文字の文字列は、ファイルとファイル アクセスの種類を指定します。

文字列mode 、次の表に示すように、ファイルを要求するアクセスの種類を指定します。

  • "r"
    読み取り用に開きます。ファイルが存在しない場合や見つからない場合、fopen 呼び出しは失敗します。

  • "w"
    書き込み用に空のファイルを開きます。指定したファイルが既に存在すると、そのファイルの内容は破棄されます。

  • "a"
    (追加)、ファイルの最後の書き込みが表示されます。それが存在しない場合は、ファイルを作成します。

  • "r+"
    読み取りと書き込みの両方のモードで開きます。ファイルが存在している必要があります。

  • "w+"
    読み取りと書き込みの両方のモードで空のファイルを開きます。指定したファイルが既に存在すると、そのファイルの内容は破棄されます。

  • "a+"
    読み取りと追加の両方が表示されます。それが存在しない場合は、ファイルを作成します。

アクセスの種類が "a" または "a+" の場合にファイルを開くと、すべての書き込み操作はファイルの末尾から行われます。ファイル ポインターを使用して移動できますfseekまたはrewindがいずれかの操作が実行されるを作成する前に、常に、ファイルの末尾に戻されます。したがって、既存のデータは上書きされません。場合、 "r+"、 "w+"、または"a+"へのアクセスの種類を指定すると、読み取りと書き込みの両方を許可されて (ファイルは、[「更新」を開放すると呼ばれます)。ただし、読み取りと書き込みを切り替える場合は、その前に fflush、fsetpos、fseek、または rewind のいずれかの関数を実行する必要があります。現在の位置を指定することができます、 fsetposまたはfseekする場合の操作。

上記の値のほかに、次の文字もに含めることができますmodeの改行文字の変換モードを指定します。

  • t
    ファイルをテキスト (変換) モードで開きます。このモードではキャリッジ リターン/ライン フィード (CR-LF) の組み合わせが入力、1 ライン フィード (LF) に変換され、LF 文字が出力に CR-LF 組み合わせに変換されます。また、ctrl キーを押しながら Z は入力ファイルの終端文字として解釈されます。読み取り/書き込み用に開かれたファイルでfopen 、ファイルの最後の Ctrl + Z を調べ、削除可能な場合は削除します。これを使用するために行われます、 fseekとftellは、ctrl キーを押しながら Z を終了ファイル内を移動するには、関数可能性fseek正しく機能しない、ファイルの末尾近くに。

  • b
    バイナリ (無変換) モードで開いています。すべての翻訳からtモードが抑制されます。

  • c
    関連付けられた filename のコミット フラグを有効にして、fflush または _flushall のいずれかが呼び出された場合に、ファイル バッファーの内容がディスクに直接書き込まれるようにします。

  • n
    関連付けられた filename のコミット フラグを "コミットなし" にリセットします。これは、既定の設定です。プログラムが Commode.obj にリンクする場合、グローバル コミット フラグも上書きされます。明示的に Commode.obj にプログラムをリンクする場合、グローバル コミット フラグの既定値は「コミットなし」です。

The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.ANSI の移植性を保持する場合は、それらを使用しないでください。

t または b を mode に指定しないと、既定の変換モードは _fmode グローバル変数によって定義されます。t または b を引数の先頭に指定すると、エラーが発生して NULL が返されます。テキスト モードとバイナリ モードの詳細についてを参照してくださいテキストとバイナリ モードのファイル入出力

fopen および _fdopen で使用される mode 文字列として有効な文字は、_open および _sopen で使用される oflag 引数と次のように対応しています。

文字mode文字列

Equivalent oflagvalue for _open/_sopen

a

_O_WRONLY | _O_APPEND (通常は _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (通常は _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY (通常は _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR (通常は _O_RDWR | _O_CREAT | _O_TRUNC)

b

_O_BINARY

t

_O_TEXT

c

なし

n

なし

必要条件

Function

必須ヘッダー

_fdopen

<stdio.h>

_wfdopen

<stdio.h> または <wchar.h>

互換性の詳細についてを参照してください互換性

使用例

// crt_fdopen.c
// This program opens a file by using low-level
// I/O, then uses _fdopen to switch to stream
// access. It counts the lines in the file.


#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>

int main( void )
{
   FILE *stream;
   int  fd, count = 0;
   char inbuf[128];

   // Open a file.
   if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
      exit( 1 );

   // Get stream from file descriptor.
   if( (stream = _fdopen( fd, "r" )) == NULL )
      exit( 1 );

   while( fgets( inbuf, 128, stream ) != NULL )
      count++;

   // After _fdopen, close by using fclose, not _close.
   fclose( stream );
   printf( "Lines in file: %d\n", count );
}

入力: crt_fdopen.txt

Line one
Line two

dye30d82.collapse_all(ja-jp,VS.110).gif出力

Lines in file: 2

同等の .NET Framework 関数

System::IO::FileStream::FileStream

参照

関連項目

ストリーム入出力

_dup、_dup2

fclose、_fcloseall

fopen、_wfopen

freopen、_wfreopen

_open、_wopen