fopen, fopen_s
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| ヘッダ <stdio.h> で定義
|
||
| (1) | ||
FILE *fopen( const char *filename, const char *mode ); |
(C99未満) | |
FILE *fopen( const char *restrict filename, const char *restrict mode ); |
(C99以上) | |
errno_t fopen_s(FILE *restrict *restrict streamptr, const char *restrict filename, const char *restrict mode); |
(2) | (C11以上) |
1)
filename で指定されたファイルを開き、そのファイルに紐付けられたファイルストリームを返します。 ファイルアクセスモードを決定するために mode が使用されます。2) (1) と同じですが、ファイルストリームを指すポインタは
streamptr に書き込まれ、以下のエラーが実行時に検出され、現在設定されている制約ハンドラ関数を呼びます。
streamptrがヌルポインタ。filenameがヌルポインタ。modeがヌルポインタ。
- すべての境界チェック付き関数と同様に、
fopen_sは__STDC_LIB_EXT1__が処理系によって定義されていて、<stdio.h>をインクルードする前にユーザが__STDC_WANT_LIB_EXT1__を整数定数 1 に定義した場合にのみ、利用可能であることが保証されます。
引数
| filename | - | ファイルストリームを紐付けるファイル名 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| mode | - | ファイルアクセスモードを決定するヌル終端文字列
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| streamptr | - | 結果を格納するポインタへのポインタ (出力引数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻り値
1) 成功した場合は、新しいファイルストリームを指すポインタを返します。
filename が対話型デバイスを参照してなければ、ストリームは完全バッファリングされます。 エラーの場合は、ヌルポインタを返します。 POSIX はこの場合に errno を設定することを要求しています。2) 成功した場合は、ゼロを返し、新しいファイルストリームを指すポインタが
*streamptr に書き込まれます。 エラーの場合、非ゼロのエラーコードを返し、 (streamptr 自体がヌルポインタでなければ) ヌルポインタが *streamptr に書き込まれます。ノート
filename の書式は処理系定義であり、必ずしもファイルを参照するとは限りません (例えば、ファイルシステム API を通してアクセス可能なコンソールや別のデバイスかもしれません)。 プラットフォームがサポートする場合、 filename はファイルシステムの絶対パスまたは相対パスを含んでも構いません。
例
Run this code
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE* fp = fopen("test.txt", "r");
if(!fp) {
perror("File opening failed");
return EXIT_FAILURE;
}
int c; // note: int, not char, required to handle EOF
while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
putchar(c);
}
if (ferror(fp))
puts("I/O error when reading");
else if (feof(fp))
puts("End of file reached successfully");
fclose(fp);
}
参考文献
- C11 standard (ISO/IEC 9899:2011):
- 7.21.5.3 The fopen function (p: 305-306)
- K.3.5.2.1 The fopen_s function (p: 588-590)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.5.3 The fopen function (p: 271-272)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.5.3 The fopen function
関連項目
| ファイルを閉じます (関数) | |
| 出力ストリームと実際のファイルを同期します (関数) | |
(C11) |
既存のストリームを別の名前で開きます (関数) |
fopen の C++リファレンス
| |