名称
ferror(), feof(), clearerr() ― ストリームのステータスの照会
構文
#include <stdio.h>
int ferror(FILE *stream);
int feof(FILE *stream);
void clearerr(FILE *stream);
廃止インタフェース
int ferror_unlocked(FILE *stream);
int feof_unlocked(FILE *stream);
void clearerr_unlocked(FILE *stream);
説明
| ferror() | | stream で指定したファイルの読み書きで I/O エラーが起きている場合には 0 以外の値を、
エラーが起きていない場合は 0 を返します。 clearerr() でクリアするか、特定の stdio ルーチンがそうしない限り、 ストリームがクローズされるまでエラーの状態が続きます。 |
| feof() | | stream で指定した入力で EOF まで読み込んだ場合は 0 以外の値を、そうでない場合は 0 を返します。 |
| clearerr() | | stream で指定したエラー状態および EOF 状態を、0 にリセットします。 |
廃止インタフェース
ferror_unlocked()、 feof_unlocked()、
および clearerr_unlocked() はストリームのステータスを照会します。
警告
これらのすべてのルーチンは、ライブラリ関数、およびマクロの両方で実現されています。
マクロ版はデフォルトで使用され、 <stdio.h>
で定義されています。 ライブラリ関数を得るには #undef でマクロ定義を削除するか、もし
ANSI-C モードでコンパイルするのであれば、関数の名前をカッコで囲むか、関数のアドレスを使用します。
これらの方法の例を下にあげます。
#include <stdio.h>
#undef ferror
...
main()
{
int (*find_error()) ();
...
return_val=ferror(fd);
...
return_val=(feof)(fd1);
...
find_error = feof;
};
リエントラントインタフェース
<stdio.h> をインクルードする前に _REENTRANT が定義されている場合は、 ferror(), feof(),
および clearerr() に対してライブラリ関数のロック付きの版が、デフォルトで使われます。
ferror_unlocked()、 feof_unlocked()、
および clearerr_unlocked() は、現在では既存の
DCE アプリケーションとの互換性を保つためにだけサポートされています。新しいマルチスレッドアプリケーションでは、 ferror(), feof() および clearerr() を使用してください。
参照
open(2), flockfile(3S), fopen(3S), thread_safety(5)
標準準拠
ferror(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C
clearerr(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C
feof(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C