fopen、_wfopenfopen, _wfopen

ファイルを開きます。Opens a file. 追加のパラメーター検証を実行してエラー コードを返す、セキュリティが強化されたバージョンの機能が使用できます。「fopen_s、_wfopen_s」をご覧ください。More-secure versions of these functions that perform additional parameter validation and return error codes are available; see fopen_s, _wfopen_s.

構文Syntax

FILE *fopen(
   const char *filename,
   const char *mode
);
FILE *_wfopen(
   const wchar_t *filename,
   const wchar_t *mode
);

パラメーターParameters

filenamefilename
ファイル名。File name.

modemode
有効なアクセス種類。Kind of access that's enabled.

戻り値Return Value

これらの各関数は、開いているファイルへのポインターを返します。Each of these functions returns a pointer to the open file. エラーが発生すると、NULL のポインター値を返します。A null pointer value indicates an error. filenameまたはmodeNULLまたは空の文字列の場合、これらの関数は、「パラメーターの検証」で説明されている無効なパラメーターハンドラーをトリガーします。If filename or mode is NULL or an empty string, these functions trigger the invalid parameter handler, which is described in Parameter Validation. 実行の継続が許可された場合、これらの関数はNULLを返し、 errnoEINVALに設定します。If execution is allowed to continue, these functions return NULL and set errno to EINVAL.

詳細については、「errno、_doserrno、_sys_errlist、_sys_nerr」をご覧ください。For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

RemarksRemarks

fopen関数は、 filenameによって指定されたファイルを開きます。The fopen function opens the file that is specified by filename. 既定では、filenameのナロー文字列は、ANSI コードページ (CP_ACP) を使用して解釈されます。By default, a narrow filename string is interpreted using the ANSI codepage (CP_ACP). Windows デスクトップ アプリケーションでは、 SetFileApisToOEM 関数を使用して、これを OEM コード ページ (CP_OEMCP) に変更できます。In Windows Desktop applications this can be changed to the OEM codepage (CP_OEMCP) by using the SetFileApisToOEM function. AreFileApisANSI関数を使用すると、ANSI またはシステムの既定の OEM コードページを使用してファイル名を解釈するかどうかを判断できます。You can use the AreFileApisANSI function to determine whether filename is interpreted using the ANSI or the system default OEM codepage. _wfopenは、 fopenのワイド文字バージョンです。 _wfopenの引数はワイド文字列です。_wfopen is a wide-character version of fopen; the arguments to _wfopen are wide-character strings. それ以外の場合、 _wfopenfopenは同じように動作します。Otherwise, _wfopen and fopen behave identically. _wfopenを使用するだけで、ファイルストリームで使用されるコード化された文字セットには影響しません。Just using _wfopen does not affect the coded character set that is used in the file stream.

fopenは、実行時にファイルシステムで有効なパスを受け入れます。fopenは、コードを実行するシステムが実行時に共有または割り当てられたドライブにアクセスできる限り、マップされたネットワークドライブを含む UNC パスとパスを受け入れます。fopen accepts paths that are valid on the file system at the point of execution; fopen accepts UNC paths and paths that involve mapped network drives as long as the system that executes the code has access to the share or mapped drive at the time of execution. fopenのパスを構築するときは、ドライブ、パス、またはネットワーク共有を実行環境で使用できるようにする必要があります。When you construct paths for fopen, make sure that drives, paths, or network shares will be available in the execution environment. ディレクトリのパス区切り記号としてスラッシュ (/) または円記号 (\) のどちらかを使用できます。You can use either forward slashes (/) or backslashes (\) as the directory separators in a path.

ファイルでその他の操作を実行する前には、必ず戻り値をチェックしてポインターが NULL かどうかを確認します。Always check the return value to see whether the pointer is NULL before you perform any additional operations on the file. エラーが発生した場合は、グローバル変数errnoが設定され、特定のエラー情報を取得するために使用されることがあります。If an error occurs, the global variable errno is set and may be used to obtain specific error information. 詳細については、「errno、_doserrno、_sys_errlist、_sys_nerr」をご覧ください。For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Unicode のサポートUnicode Support

fopenは Unicode ファイルストリームをサポートしています。fopen supports Unicode file streams. Unicode ファイルを開くには、次のように、目的のエンコードを指定するccsフラグをfopenに渡します。To open a Unicode file, pass a ccs flag that specifies the desired encoding to fopen, as follows.

FILE *fp = fopen("newfile.txt", "rt+, ccs= encoding ");FILE *fp = fopen("newfile.txt", "rt+, ccs=encoding");

encoding に使用できる値は、 UNICODEUTF-8、およびUTF-16LEです。Allowed values of encoding are UNICODE, UTF-8, and UTF-16LE.

ファイルが Unicode モードで開かれると、入力関数は、ファイルから読み取ったデータをwchar_t型として格納された UTF-16 データに変換します。When a file is opened in Unicode mode, input functions translate the data that's read from the file into UTF-16 data stored as type wchar_t. Unicode モードで開かれたファイルに書き込む関数は、 wchar_t型として格納された UTF-16 データを含むバッファーを想定します。Functions that write to a file opened in Unicode mode expect buffers that contain UTF-16 data stored as type wchar_t. ファイルが UTF-8 としてエンコードされている場合、UTF-16 データは書き込まれるときに UTF-8 に変換され、ファイルの UTF-8 でエンコードされた内容は読み取られるときに UTF-16 に変換されます。If the file is encoded as UTF-8, then UTF-16 data is translated into UTF-8 when it is written, and the file's UTF-8-encoded content is translated into UTF-16 when it is read. Unicode モードで奇数バイトの読み取りまたは書き込みを試みると、 パラメーター検証 エラーが発生します。An attempt to read or write an odd number of bytes in Unicode mode causes a parameter validation error. UTF-8 としてプログラムに格納されたデータを読み取るか書き込む場合は、Unicode モードではなくテキストまたはバイナリ ファイル モードを使用します。To read or write data that's stored in your program as UTF-8, use a text or binary file mode instead of a Unicode mode. 必要なエンコード変換は各自が行う必要があります。You are responsible for any required encoding translation.

既に存在するファイルを読み取り用または追加用に開く場合は、ファイル内にバイト順マーク (BOM: Byte Order Mark) があれば、それによってエンコーディングが決定されます。If the file already exists and is opened for reading or appending, the Byte Order Mark (BOM), if it present in the file, determines the encoding. BOM エンコーディングは、 ccs フラグによって指定されたエンコーディングよりも優先されます。The BOM encoding takes precedence over the encoding that is specified by the ccs flag. ccs エンコーディングは、BOM が存在しない場合、またはファイルが新しいファイルの場合にのみ使用されます。The ccs encoding is only used when no BOM is present or the file is a new file.

注意

BOM 検出は、Unicode モードで開かれたファイル (つまり、 ccsフラグを渡すことによって) にのみ適用されます。BOM detection only applies to files that are opened in Unicode mode (that is, by passing the ccs flag).

次の表は、ファイル内のfopenおよびバイト順マークに指定されたさまざまなccsフラグに使用されるモードをまとめたものです。The following table summarizes the modes that are used for various ccs flags given to fopen and Byte Order Marks in the file.

ccs フラグおよび BOM に基づいて使用されるエンコーディングEncodings Used Based on ccs Flag and BOM

ccs フラグccs flag BOM なし (または新しいファイル)No BOM (or new file) 消費UTF-8BOM: UTF-8 消費UTF-16BOM: UTF-16
対応UNICODE UTF-16LEUTF-16LE UTF-8UTF-8 UTF-16LEUTF-16LE
UTF-8UTF-8 UTF-8UTF-8 UTF-8UTF-8 UTF-16LEUTF-16LE
UTF-16LEUTF-16LE UTF-16LEUTF-16LE UTF-8UTF-8 UTF-16LEUTF-16LE

Unicode モードで書き込むように開かれたファイルには、自動的に BOM が書き込まれます。Files opened for writing in Unicode mode have a BOM written to them automatically.

mode"a, ccs = encoding " の場合、 fopenはまず、読み取りと書き込みの両方のアクセス権を使用してファイルを開こうとします。If mode is "a, ccs=encoding", fopen first tries to open the file by using both read and write access. 成功すると、この関数は BOM を読み取ってファイルのエンコーディングを決定します。失敗した場合は、ファイルに対して既定のエンコーディングを使用します。If this succeeds, the function reads the BOM to determine the encoding for the file; if this fails, the function uses the default encoding for the file. どちらの場合も、 fopenは書き込み専用アクセスを使用してファイルを再び開きます。In either case, fopen will then re-open the file by using write-only access. (これは "a+" モードではなく "a" モードにのみ適用されます)。(This applies to "a" mode only, not to "a+" mode.)

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tfopen_tfopen fopenfopen fopenfopen _wfopen_wfopen

mode文字列では、次のように、ファイルに要求されるアクセスの種類を指定します。The character string mode specifies the kind of access that is requested for the file, as follows.

modemode アクセスAccess
"r""r" 読み取り用に開きます。Opens for reading. ファイルが存在しないか見つからない場合、 fopen呼び出しは失敗します。If the file does not exist or cannot be found, the fopen call fails.
"w""w" 書き込み用に空のファイルを開きます。Opens an empty file for writing. 指定したファイルが既に存在すると、そのファイルの内容は破棄されます。If the given file exists, its contents are destroyed.
"a""a" 末尾に書き込みができるようにファイルを開きます (追加モード)。EOF (end-of-file) マーカーを削除せずにファイルに新しいデータを書き込みます。Opens for writing at the end of the file (appending) without removing the end-of-file (EOF) marker before new data is written to the file. ファイルが存在しない場合は、作成します。Creates the file if it does not exist.
"r+""r+" 読み取りと書き込みの両方のモードで開きます。Opens for both reading and writing. ファイルが存在している必要があります。The file must exist.
"w+""w+" 読み取りと書き込みの両方のモードで空のファイルを開きます。Opens an empty file for both reading and writing. そのファイルが既に存在すると、そのファイルの内容は破棄されます。If the file exists, its contents are destroyed.
"a+""a+" 読み取りと追加の両方のモードでファイルを開きます。Opens for reading and appending. 追加操作には、新しいデータをファイルに書き込む前に EOF マーカーを削除することが含まれます。The appending operation includes the removal of the EOF marker before new data is written to the file. 書き込みの完了後に、EOF マーカーは復元されません。The EOF marker is not restored after writing is completed. ファイルが存在しない場合は、作成します。Creates the file if it does not exist.

"a" または "a +" のアクセスの種類を使用してファイルを開くと、すべての書き込み操作がファイルの末尾で行われます。When a file is opened by using the "a" access type or the "a+" access type, all write operations occur at the end of the file. ファイルポインターは、 fseek または rewind を使用して移動できますが、書き込み操作が実行される前に常にファイルの末尾に戻されます。The file pointer can be repositioned by using fseek or rewind, but is always moved back to the end of the file before any write operation is performed. したがって、既存のデータは上書きされません。Therefore, existing data cannot be overwritten.

"a" モードでは、ファイルに追加する前に EOF マーカーは削除されません。The "a" mode does not remove the EOF marker before it appends to the file. 追加が行われても、MS-DOS TYPE コマンドでは元の EOF マーカーまでのデータしか表示されず、ファイルに追加されたデータは表示されません。After appending has occurred, the MS-DOS TYPE command only shows data up to the original EOF marker and not any data appended to the file. ファイルに追加する前に、 "a+" モードで EOF マーカーが削除されます。Before it appends to the file, the "a+" mode does remove the EOF marker. 追加が終了すると、MS-DOS の TYPE コマンドでファイル内すべてのデータが表示されます。After appending, the MS-DOS TYPE command shows all data in the file. CTRL + Z EOF マーカーで終了するストリームファイルに追加するには、 "a+" モードが必要です。The "a+" mode is required for appending to a stream file that is terminated with the CTRL+Z EOF marker.

"r+""w+" 、または "a+" のアクセスの種類が指定されている場合、読み取りと書き込みの両方が有効になります (ファイルは "更新" 用に開かれていると言います)。When the "r+", "w+", or "a+" access type is specified, both reading and writing are enabled (the file is said to be open for "update"). ただし、読み取りから書き込みに切り替えると、入力操作は EOF マーカーを検出する必要があります。However, when you switch from reading to writing, the input operation must encounter an EOF marker. EOF がない場合、ファイル ポジショニング関数の中間の呼び出しを使用する必要があります。If there is no EOF, you must use an intervening call to a file positioning function. ファイルポジショニング関数は、 fsetposfseek、およびrewindです。The file positioning functions are fsetpos, fseek, and rewind. 書き込みから読み取りに切り替える場合は、 fflushまたはファイルポジショニング関数のいずれかに介在する呼び出しを使用する必要があります。When you switch from writing to reading, you must use an intervening call to either fflush or to a file positioning function.

前の値に加えて、次の文字をmodeに追加して、改行文字の変換モードを指定できます。In addition to the earlier values, the following characters can be appended to mode to specify the translation mode for newline characters.

mode修飾子mode modifier 変換モードTranslation mode
tt ファイルをテキスト (変換) モードで開きます。Open in text (translated) mode.
bb バイナリ (無変換) モードで開く復帰文字と改行文字を含む翻訳は抑制されます。Open in binary (untranslated) mode; translations involving carriage-return and line feed characters are suppressed.

テキストモードでは、CTRL + Z は入力時に EOF 文字として解釈されます。In text mode, CTRL+Z is interpreted as an EOF character on input. "a+" を使用して読み取り/書き込み用に開かれたファイルでは、 fopenがファイル末尾に CTRL + Z があるかどうかをチェックし、可能な場合は削除します。In files that are opened for reading/writing by using "a+", fopen checks for a CTRL+Z at the end of the file and removes it, if it is possible. これは、CTRL + Z で終わるファイル内でfseekftellを使用して移動すると、ファイルの末尾付近でfseekが正しく動作しない可能性があるためです。This is done because using fseek and ftell to move within a file that ends with CTRL+Z may cause fseek to behave incorrectly near the end of the file.

テキストモードでは、キャリッジリターンラインフィードの組み合わせは入力時に1つの改行に変換され、ラインフィード文字は出力時に復帰と改行の組み合わせに変換されます。In text mode, carriage return-line feed combinations are translated into single line feeds on input, and line feed characters are translated to carriage return-line feed combinations on output. Unicode のストリーム入出力関数が既定のテキスト モードで動作すると、入力元または出力先のストリームはマルチバイト文字のシーケンスと仮定されます。When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. このため、Unicode ストリーム入力関数はマルチバイト文字をワイド文字に変換し、 mbtowc 関数を呼び出した場合と同様の効果を得ます。Therefore, the Unicode stream-input functions convert multibyte characters to wide characters (as if by a call to the mbtowc function). 同様の理由で、Unicode ストリーム出力関数は、 wctomb 関数が呼び出されたかのように、ワイド文字をマルチバイト文字に変換します。For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters (as if by a call to the wctomb function).

tまたはbmodeで指定しない場合、既定の変換モードは、グローバル変数_fmodeによって定義されます。If t or b is not given in mode, the default translation mode is defined by the global variable _fmode. tまたはbが引数の前に付加されている場合、関数は失敗し、 NULLを返します。If t or b is prefixed to the argument, the function fails and returns NULL.

テキスト モードとバイナリ モードの Unicode およびマルチバイト ストリーム i/o を使用する方法の詳細については、テキスト モードとバイナリ モードのファイル入出力テキストとバイナリ モードの Unicode Stream I/Oを参照してください。For more information about how to use text and binary modes in Unicode and multibyte stream-I/O, see Text and Binary Mode File I/O and Unicode Stream I/O in Text and Binary Modes.

次のオプションをmodeに追加すると、追加の動作を指定できます。The following options can be appended to mode to specify additional behaviors.

mode修飾子mode modifier 動作Behavior
cc 関連付けられているファイル名のコミットフラグを有効にして、 fflushまたは _flushallが呼び出された場合に、ファイルバッファーの内容がディスクに直接書き込まれるようにします。Enable the commit flag for the associated filename so that the contents of the file buffer are written directly to disk if either fflush or _flushall is called.
nn 関連付けられているファイル名のコミットフラグを "コミットなし" にリセットします。Reset the commit flag for the associated filename to "no-commit." 既定値です。This is the default. プログラムを COMMODE.OBJ とリンクする場合は、グローバル コミット フラグもオーバーライドします。It also overrides the global commit flag if you link your program with COMMODE.OBJ. プログラムを明示的に COMMODE.OBJ とリンクしない場合、グローバル コミット フラグの既定の設定は "コミットなし" です (「 Link Options」をご覧ください)。The global commit flag default is "no-commit" unless you explicitly link your program with COMMODE.OBJ (see Link Options).
NN ファイルが子プロセスによって継承されないように指定します。Specifies that the file is not inherited by child processes.
SS キャッシュがディスクからのシーケンシャル アクセスに最適化されるように指定します。ただし、シーケンシャル アクセスに限定されるわけではありません。Specifies that caching is optimized for, but not restricted to, sequential access from disk.
RR キャッシュがディスクからのランダム アクセスに最適化されるように指定します。ただし、ランダム アクセスに限定されるわけではありません。Specifies that caching is optimized for, but not restricted to, random access from disk.
TT ファイルを一時ファイルとして指定します。Specifies a file as temporary. 可能な場合、ファイルはディスクにフラッシュされません。If possible, it is not flushed to disk.
DD ファイルを一時ファイルとして指定します。Specifies a file as temporary. 最後のファイル ポインターが閉じられると、ファイルは削除されます。It is deleted when the last file pointer is closed.
ccs = エンコードccs=encoding このファイルに使用するエンコードされた文字セット ( utf-8Utf 16LEUNICODEのいずれか) を指定します。Specifies the encoded character set to use (one of UTF-8, UTF-16LE, or UNICODE) for this file. 何も指定しない場合は、ANSI エンコーディングが使用されます。Leave unspecified if you want ANSI encoding.

fopen_fdopenで使用されるmode文字列の有効な文字は、次のように、 _openおよび_sopenで使用されるoflag引数に対応します。Valid characters for the mode string that is used in fopen and _fdopen correspond to oflag arguments that are used in _open and _sopen, as follows.

mode文字列の文字Characters in mode string _open_sopen の同等のoflagEquivalent oflag value for _open/_sopen
aa _O_WRONLY| _O_APPEND (通常は _O_WRONLY | _O_CREAT | _O_APPEND)___________O_WRONLY | _O_APPEND (usually _O_WRONLY | _O_CREAT | _O_APPEND)
a+a+ _O_RDWR | _O_APPEND (通常は _O_RDWR | _O_APPEND | _O_CREAT )___________O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT )
rr _O_RDONLY___O_RDONLY
r+r+ _O_RDWR___O_RDWR
ww _O_WRONLY (通常は _O_WRONLY | _O_CREAT | _O_TRUNC)_________O_WRONLY (usually _O_WRONLY | _O_CREAT | _O_TRUNC)
w+w+ _O_RDWR(通常は _O_RDWR | _O_CREAT | _O_TRUNC)_________O_RDWR (usually _O_RDWR | _O_CREAT | _O_TRUNC)
bb _O_BINARY___O_BINARY
tt _O_TEXT___O_TEXT
cc なしNone
nn なしNone
SS _O_SEQUENTIAL___O_SEQUENTIAL
RR _O_RANDOM___O_RANDOM
TT _O_SHORTLIVED___O_SHORTLIVED
DD _O_TEMPORARY___O_TEMPORARY
ccs = UNICODEccs=UNICODE _O_WTEXT___O_WTEXT
ccs = UTF-8ccs=UTF-8 _O_UTF8___O_UTF8
ccs = 16LEccs=UTF-16LE _O_UTF16___O_UTF16

rbモードを使用している場合は、コードを移植する必要はなく、大規模なファイルの大部分を読み取ることが予想される場合や、ネットワークのパフォーマンスに不安がある場合は、オプションとしてメモリマップ Win32 ファイルを使用するかどうかを検討することもできます。If you are using rb mode, you do not have to port your code, and if you expect to read most of a large file or are not concerned about network performance, you might also consider whether to use memory mapped Win32 files as an option.

必要条件Requirements

関数Function 必須ヘッダーRequired header
fopenfopen <stdio.h><stdio.h>
_wfopen_wfopen <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

_wfopenは Microsoft の拡張機能です。_wfopen is a Microsoft extension. 互換性の詳細については、「 互換性」を参照してください。For more information about compatibility, see Compatibility.

cntSRT、および D modeのオプションは、fopen_fdopenのための Microsoft 拡張機能であり、ANSI の移植性が必要な場合は使用しないでください。The c, n, t, S, R, T, and D mode options are Microsoft extensions for fopen and _fdopen and should not be used where ANSI portability is desired.

例 1Example 1

次のプログラムは 2 ファイルを開きます。The following program opens two files. この例では、 fcloseを使用して最初のファイルを閉じ、残りのすべてのファイルを閉じます。It uses fclose to close the first file and _fcloseall to close all remaining files.

// crt_fopen.c
// compile with: /W3
// This program opens two files. It uses
// fclose to close the first file and
// _fcloseall to close all remaining files.

#include <stdio.h>

FILE *stream, *stream2;

int main( void )
{
   int numclosed;

   // Open for read (will fail if file "crt_fopen.c" does not exist)
   if( (stream  = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
   // Note: fopen is deprecated; consider using fopen_s instead
      printf( "The file 'crt_fopen.c' was not opened\n" );
   else
      printf( "The file 'crt_fopen.c' was opened\n" );

   // Open for write
   if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996
      printf( "The file 'data2' was not opened\n" );
   else
      printf( "The file 'data2' was opened\n" );

   // Close stream if it is not NULL
   if( stream)
   {
      if ( fclose( stream ) )
      {
         printf( "The file 'crt_fopen.c' was not closed\n" );
      }
   }

   // All other files are closed:
   numclosed = _fcloseall( );
   printf( "Number of files closed by _fcloseall: %u\n", numclosed );
}
The file 'crt_fopen.c' was opened
The file 'data2' was opened
Number of files closed by _fcloseall: 1

例 2Example 2

次のプログラムでは、Unicode エンコーディングのテキスト モードで、ファイルを作成します (ファイルが存在する場合は上書きします)。The following program creates a file (or overwrites one if it exists), in text mode that has Unicode encoding. その後、2 つの文字列をファイルに書き込み、ファイルを閉じます。It then writes two strings into the file and closes the file. _wfopen_test.xml というファイルが出力されます。このファイルには、出力セクションのデータが格納されます。The output is a file named _wfopen_test.xml, which contains the data from the output section.

// crt__wfopen.c
// compile with: /W3
// This program creates a file (or overwrites one if
// it exists), in text mode using Unicode encoding.
// It then writes two strings into the file
// and then closes the file.

#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <wchar.h>

#define BUFFER_SIZE 50

int main(int argc, char** argv)
{
    wchar_t str[BUFFER_SIZE];
    size_t  strSize;
    FILE*   fileHandle;

    // Create an the xml file in text and Unicode encoding mode.
    if ((fileHandle = _wfopen( L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996
    // Note: _wfopen is deprecated; consider using _wfopen_s instead
    {
        wprintf(L"_wfopen failed!\n");
        return(0);
    }

    // Write a string into the file.
    wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"<xmlTag>\n");
    strSize = wcslen(str);
    if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
    {
        wprintf(L"fwrite failed!\n");
    }

    // Write a string into the file.
    wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"</xmlTag>");
    strSize = wcslen(str);
    if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
    {
        wprintf(L"fwrite failed!\n");
    }

    // Close the file.
    if (fclose(fileHandle))
    {
        wprintf(L"fclose failed!\n");
    }
    return 0;
}

関連項目See also

ストリーム入出力Stream I/O
マルチバイト文字のシーケンスの解釈Interpretation of Multibyte-Character Sequences
fclose、_fcloseallfclose, _fcloseall
_fdopen、_wfdopen_fdopen, _wfdopen
ferrorferror
_fileno_fileno
freopen、_wfreopenfreopen, _wfreopen
_open、_wopen_open, _wopen
_setmode_setmode
_sopen、_wsopen_sopen, _wsopen