_fsopen、_wfsopen

ファイル共有のストリームを開きます。

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

パラメーター

  • filename
    開くファイルの名前。

  • mode
    アクセス許可の種類。

  • shflag
    許可される共有の型。

戻り値

これらの関数は、ストリームへのポインターを返します。エラーが発生すると、NULL のポインター値を返します。filename か mode が NULL または空の文字列である場合、これらの関数は無効なパラメーター ハンドラーを、 " に説明されているように パラメーターの検証。実行の継続が許可された場合、これらの関数は NULL を返し、errno を EINVAL に設定します。

これらのプロパティおよびそのほかのエラー コードに関する詳細については、 _doserrno、 errno、 _sys_errlist と _sys_nerrを参照してください。

解説

_fsopen 関数は、ストリームとして filename で指定されたファイルを開き、後続の共有読み取りまたは書き込みに shflag モードと引数の定義にファイルを準備します。_wfsopen_fsopenのワイド文字バージョンです; _wfsopen への filename と mode の引数はワイド文字列です。それ以外では、_wfsopen_fsopen の動作は同じです。

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

語句

定義

"r"

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

"w"

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

"a"

ファイル (追加)の末尾に書き込み用に開きます; 存在しないファイルを最初に作成します。

"r+"

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

"w+"

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

"a+"

読み取りと追加のように開かれます; 存在しないファイルを最初に作成します。

既存のファイルを破棄できるように、十の "w" と "w+" の型を使用します。

アクセスの種類が "a" または "a+" の場合にファイルを開くと、すべての書き込み操作はファイルの末尾から行われます。ファイル ポインターは fseekrewindを使用して場所を変更できますが、書き込み操作の前にファイルの末尾に、常に移動されます。したがって、既存のデータは上書きされません。"r+"、 "w+"、または "a+" のアクセスの種類を指定すると、読み取りと書き込みの両方を行うことができます (ファイルは更新モードで開きます)。ただし、読み取りと書き込みの間で切り替える場合、その間の fsetposfseek、または 巻き戻し の操作が必要です。必要に応じて、fsetpos 関数または fseek 関数には現在位置を指定できます。上記の値に加え新しい行とファイル管理の変換モードを指定するには、次の文字の 1 つが mode に含めることができます。

語句

定義

t

テキスト (変換)モードでファイルを開きます。このモードでは、キャリッジ戻り行の指定 (CR-LF)の組み合わせの入力時に一つのライン フィードに (LF)変換され、 LF 文字が出力 CR-LF の組み合わせに変換されます。また、 Ctrl + Z は入力のファイルの終端の文字として解釈されます。/書き込みに対して読み取りまたは読み取り開かれたファイルでは _fsopen はファイルの末尾に Ctrl + Z がチェックし、それを、可能であれば削除します。これは fseekftell を使用すると、 CTRL+Z で終わるファイル内で移動するに fseek はファイルの末尾付近でが正しく動作する可能性があるためです。

b

バイナリ (無変換)モードでファイルを開きます; 上記の変換は行われません。

S

キャッシュがディスクからのシーケンシャル アクセスに最適化されるように指定します。ただし、シーケンシャル アクセスに限定されるわけではありません。

R

キャッシュがディスクからのランダム アクセスに最適化されるように指定します。ただし、ランダム アクセスに限定されるわけではありません。

T

ファイルを一時ファイルとして指定します。可能な場合、ファイルはディスクにフラッシュされません。

D

ファイルを一時ファイルとして指定します。最後のファイル ポインターが閉じられると、ファイルは削除されます。

t か b が modeになっていない場合、変換モードは既定のモードの変数 _fmodeによって定義されます。t または b を引数の先頭に指定すると、エラーが発生して NULL が返されます。テキストおよびバイナリ モードの詳細については、 テキストとバイナリ モードは、 I/O がありますを参照してください。

引数 shflag は、次のマニフェスト定数の 1 桁で構成される定数式 Share.h で定義されている型です。

語句

定義

_SH_COMPAT

16 ビット アプリケーションの互換性モードを設定します。

_SH_DENYNO

読み取りと書き込み。

_SH_DENYRD

ファイルへの読み取りアクセスを拒否します。

_SH_DENYRW

読み取り許可およびファイルへの書き込みアクセス。

_SH_DENYWR

ファイルへの書き込みアクセスを拒否します。

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

Tchar.h のルーチン

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

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tfsopen

_fsopen

_fsopen

_wfsopen

必要条件

Function

必須ヘッダー

省略可能なヘッダー

_fsopen

<stdio.h>

<share.h>

shflag パラメーターのマニフェスト定数の場合は。

_wfsopen

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

<share.h>

shflag パラメーターのマニフェスト定数の場合は。

使用例

// crt_fsopen.c

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

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}
  

同等の .NET Framework 関数

参照

関連項目

ストリーム入出力

fclose、_fcloseall

_fdopen、_wfdopen

ferror

_fileno

fopen、_wfopen

freopen、_wfreopen

_open、_wopen

_setmode

_sopen、_wsopen