HIR-NET Home C言語 運営者 オンラインソフト 運営者著書 CG HIR-NETリンク集

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

>>■





◆リンクは、ご自由にお張りください。

Copyright © 1988-2017 Hirabayashi Masahide  プライバシーポリシー