HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
C言語辞典
feof関数
feof function
語源
file end of file(ファイル終了)
分類
C/C++標準ライブラリ/関数/入出力関数/ファイルエラー操作関数
名称
ファイル終了検出関数(file ending detection function)
類似
ferror関数
関連
fopen関数, clearerr関数, rewind関数
解説
feof関数は、ファイルの終わりを検出する関数です。ストリーム*stream のファイル終了指示子を検査します。
関数原型宣言ヘッダ
<stdio.h>
関数原型宣言例
ストリーム
↓
int feof(FILE *stream);
↓
非0:終了
0:非終了
関数返却値
①*stream のファイル終了指示子が設定されているときは非0 を返します。
②設定されていなければ 0 を返します。
落とし穴
feof関数の呼出は文字入力関数呼出直後に行う必要があります。なぜなら文字入力関数はファイル位置指示子を進めてから文字を参照するからです。feof関数による検出は文字入力関数呼出直後に(ファイル位置指示子が)ファイルの終わりに達していて入力が出来なかったと分かるのであって、文字入力関数呼出直前に(ファイル位置指示子が)ファイルの終わりに達しているため入力が出来ないと分かるのではないからです。
関数定義例
この定義例は互換性はありません。一例として示しました。この定義例では FILE の flagsメンバの 5ビット目がファイル終了指示子です。
#include <stdio.h> // FILE
int feof( // ファイル終了関数 File End Of File
// 0≠終了
// 0=非終了
FILE *stream) // 入力ストリーム
{
return stream->_flags & 0x0020;
//[解説]0020(16)==0010 0000(2)
} // feof
ファイルの終わりの検出
// feof1.c
#include <stdio.h> // FILE,EOF,feof,fopen,getc,
// putchar
#include <stdlib.h> // EXIT_SUCCESS
int main(int argc,char *argv[])
{
FILE *sget; // 入力ストリーム Stream GET
sget=fopen(argv[1],"r");
while(!feof(sget))
{
int c=getc(sget); // 文字入力
if(c!=EOF)putchar(c); // 文字出力
} // while
return EXIT_SUCCESS;
} // main
実行結果
>>type feof.tes⏎ …… ファイルの内容確認
abcdefg
123
>>feof1 feof.tes⏎
abcdefg
123
>>■
HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
◆リンクは、ご自由にお張りください。
Copyright © 1988-2017 Hirabayashi Masahide プライバシーポリシー