fopen, fopen_s
提供: cppreference.com
ヘッダ <stdio.h> で定義 | ||
(1) | ||
FILE*fopen(constchar*filename, constchar*mode ); | (C99未満) | |
FILE*fopen(constchar*restrict filename, constchar*restrict mode ); | (C99以上) | |
errno_t fopen_s(FILE*restrict*restrict streamptr, constchar*restrict filename, | (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");returnEXIT_FAILURE;} int c;// note: int, not char, required to handle EOFwhile((c =fgetc(fp))!=EOF){// standard C I/O file reading loopputchar(c);} if(ferror(fp))puts("I/O error when reading");elseif(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)