_fsopen, _wfsopen
stdio.h:インデックス への移動
ヘッダーファイル
stdio.h, share.h
カテゴリ
入出力ルーチン
プロトタイプ
FILE *_fsopen(const char *filename, const char *mode, int shflag);
FILE *_wfsopen(const wchar_t *filename, const wchar_t *mode, int shflag);
説明
共有ファイルのストリームを開きます。
_fsopen は,filename で指定されたファイルを開き,そのファイルにストリームを関連付けます。_fsopen は,後続の操作でストリームを特定するために使用されるポインタを返します。
_fsopen の呼び出しに使用される mode 文字列は,次のいずれかの値です。
r | 読み出し専用で開きます。 | w | 書き込み用に作成します。その名前のファイルがすでに存在する場合は,上書きされます。 | a | 追加します。ファイルの終わりに書き込むように開きます。ただし,ファイルが存在しない場合は,書き込み用に作成します。 | r+ | 既存のファイルを更新(読み出しと書き込み)用に開きます。 | w+ | 新しいファイルを更新(読み出しと書き込み)用に作成します。その名前のファイルがすでに存在する場合は,上書きされます。 | a+ | 追加用に開きます。ファイルの終わりで更新するために開きます(ファイルが存在しない場合は作成する)。 |
---|
指定したファイルをテキストモードで開くまたは作成するには,mode 文字列に t を追加します(rt,w+t など)。同様に,バイナリモードを指定するには,mode 文字列に b を追加します(wb,a+b など)。_fsopen では,mode 文字列のアルファベット文字と + 文字の間に t または b を挿入することもできます。たとえば,rt+ は r+t と同じです。mode 文字列で t または b が指定されていない場合,モードは,グローバル変数 _fmode で制御されます。_fmode が O_BINARY に設定されている場合,ファイルはバイナリモードで開かれます。_fmode が O_TEXT に設定されている場合,ファイルはテキストモードで開かれます。これらの O_... 定数は,fcntl.h で定義されています。
ファイルを更新用に開く場合は,取得したストリームで入力と出力の両方を実行できます。
- 出力の直後に入力を続けることはできません。間に fseek または rewind を入れる必要があります。
- 入力の直後に出力を続けることはできません。間に fseek または rewind を入れるか,入力がファイルの終わり(EOF)に到達する必要があります。
shflag は,このファイルの filename に対して許可されるファイル共有のタイプを指定します。shflag のシンボル定数は,share.h で定義されています。
SH_COMPAT |
互換モードを設定します。 |
SH_DENYRW |
読み書きアクセスを拒否します。 |
SH_DENYWR |
書き込みアクセスを拒否します。 |
SH_DENYRD |
読み出しアクセスを拒否します。 |
SH_DENYNONE |
読み書きアクセスを許可します。 |
SH_DENYNO |
読み書きアクセスを許可します。 |
戻り値
成功した場合,_fsopen は,新しく開かれたストリームを指すポインタを返します。
エラーが発生した場合は,NULL を返します。
例
#include <io.h>
#include <process.h>
#include <share.h>
#include <stdio.h>
int main(void)
{
FILE *f;
int status;
f = _fsopen("TESTFILE.DAT", "r", SH_DENYNO);
if (f == NULL)
{
printf("_fsopen failed\n");
exit(1);
}
status = access("TESTFILE.DAT", 6);
if (status == 0)
printf("read/write access allowed\n");
else
printf("read/write access not allowed\n");
fclose(f);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_fsopen |
+ |
|||
_wfsopen |
NT のみ |