std::feof
From cppreference.com
| ヘッダ <cstdio>で定義 |
||
| int feof( std::FILE* stream ); |
||
指定されたファイルストリームの終端に達したかどうかを確認します。
目次 |
[編集] パラメータ
| stream | - | 確認するファイルストリーム |
[編集] 戻り値
ストリームの終端に達した場合はゼロ以外の値、それ以外の場合は0。
[編集] 注意
この関数は、直近のI/O操作によって報告されたストリームの状態のみを報告し、関連するデータソースを検査しません。たとえば、直近のI/Oがファイルの最後のバイトを返したstd::fgetcであった場合、std::feofはゼロを返します。次のstd::fgetcは失敗し、ストリームの状態をファイル終端に変更します。その後に初めてstd::feofはゼロ以外の値を返します。
一般的な使用方法では、入力ストリーム処理はどのエラーでも停止します。feofとstd::ferrorは、異なるエラー条件を区別するために使用されます。
[編集] 例
このコードを実行
#include <cstdio> #include <cstdlib> int main() { int is_ok = EXIT_FAILURE; FILE* fp = std::fopen("/tmp/test.txt", "w+"); if (!fp) { std::perror("File opening failed"); return is_ok; } int c; // Note: int, not char, required to handle EOF while ((c = std::fgetc(fp)) != EOF) // Standard C I/O file reading loop std::putchar(c); if (std::ferror(fp)) std::puts("I/O error when reading"); else if (std::feof(fp)) { std::puts("End of file reached successfully"); is_ok = EXIT_SUCCESS; } std::fclose(fp); return is_ok; }
出力
End of file reached successfully
[編集] 関連項目
| ファイルの終端に達したかを確認する ( std::basic_ios<CharT,Traits> の public メンバ関数) | |
| エラーをクリアする (関数) | |
| 現在のエラーに対応する文字列を stderr に表示する (関数) | |
| ファイルエラーをチェックする (関数) | |
| Cドキュメント (
feof) | |