![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
バイナリデータの中に「EOF」が入っている場合それを「EOF]と認識してしまうと、その後のデータを読めね九なってしまいます。
そこで、データの容量をチェックして総てのファイルを処理するようにしているのです。
ありがとうございました。
char c = fgetc(...);
if(c == EOF){....
のように、
して不安定なエラーが出て、
ぎもんがしょうじたのです。
もちろん
int c = fgetc(...);
if(c == EOF){....
と修正したら
エラーは出なくなったのですが、
EOFとは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。
No.6
- 回答日時:
EOF=0x1aというのはDOSのテキストファイルの話です。
一般にCのライブラリ関数でEOFが返ってくるのは、単純に『読み込むデータがなくなった』ときです。
いわゆるバイナリファイルも当然大きさは有限ですから、順繰りに読んでいけばいつかはファイルの終端に達し、読むべきデータがなくなります。そうすると、読み込み関数はEOF(もしくはNULL)を返すのです。
逆に、途中のデータを読んでいて、その先にまだデータが残っている限り、EOFとは認識されないわけです。
ちなみに、C言語の世界でEOFの実体は -1 です。もちろん実際のファイルに-1というデータが入っているわけではありません。
ありがとうございました。
char c = fgetc(...);
if(c == EOF){....
のように、
して不安定なエラーが出て、
ぎもんがしょうじたのです。
もちろん
int c = fgetc(...);
if(c == EOF){....
と修正したら
エラーは出なくなったのですが、
EOFとは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。
No.5
- 回答日時:
Windowsの場合、ファイルをテキストモードでオープンした場合、ファイル中の"0x1a"をEOFと扱います。
したがって、ファイルをオープンしたときのモードによってEOFの扱いが違ってきます。
なお、UNIXにはテキストモードはありません。
ありがとうございました。
char c = fgetc(...);
if(c == EOF){....
のように、
して不安定なエラーが出て、
ぎもんがしょうじたのです。
もちろん
int c = fgetc(...);
if(c == EOF){....
と修正したら
エラーは出なくなったのですが、
EOFとは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?e8efa67)
No.4
- 回答日時:
そもそもEOFとはデータではないのでは?
バイナリファイルと言っても1byteのデータは0~255の値なので、fgetc関数などを用いたときEOFと区別がつけられるのではないでしょうか?
No.3
- 回答日時:
ちなみに、最近はテキストファイルでもEOFが書き込まれてないことが多いです。
ファイルのサイズ情報を見れば、どこでファイルが終了するのか一目瞭然ですから、わざわざ入れる必要がないというわけです。
ありがとうございました。
char c = fgetc(...);
if(c == EOF){....
のように、
して不安定なエラーが出て、
ぎもんがしょうじたのです。
もちろん
int c = fgetc(...);
if(c == EOF){....
と修正したら
エラーは出なくなったのですが、
EOFとは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。
No.2
- 回答日時:
バイナリモードでファイルを読んでいる場合、EOFの検出はファイル内のデータとは関係ありません。
読み込みで、ファイルの最後に到達し、それ以上読み込むデータが無くなったときにEOFとなります。
ありがとうございました。
char c = fgetc(...);
if(c == EOF){....
のように、
して不安定なエラーが出て、
ぎもんがしょうじたのです。
もちろん
int c = fgetc(...);
if(c == EOF){....
と修正したら
エラーは出なくなったのですが、
EOFとは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。特にものすごく怒られたときとか、とんでもない損害を与えてしまったときとか…。
-
EXCELのVBAでEOFを誤認識
Visual Basic(VBA)
-
続・EOF判定されない
C言語・C++・C#
-
csvファイルの最後にeof(0x1a)を付けたいのですが
Windows Vista・XP
-
-
4
freadでデータがない場合の読込値は?
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
7
fopne で失敗する原因
C言語・C++・C#
-
8
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
9
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
10
VBA バイナリ―から文字列にする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
ページ読み込み時に自動的にsub...
-
【python】Excelファイルを読み...
-
バイナリファイルの比較につい...
-
バイナリエディタのつかいかた
-
Javaでのエンディアン変換
-
Microsoft VBAで2GBを超えるフ...
-
テキストデータをSQLServerに取...
-
テキストデータをバイナリデー...
-
EXCEL VBAでテキストファイルの...
-
リストビュー ⇔ 別ファイル構...
-
Excelファイルの軽量化の方法を...
-
削除したファイルの復旧、およ...
-
バイナリーデータの一部データ...
-
PHPのfgetcsvの処理容量について
-
C言語初心者の質問失礼します。
-
フルパスから最後のディレクト...
-
C言語関数違いについて。
-
Acccess レポートをグループ別...
-
グローバル変数のよくない使い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
EXCEL VBAでテキストファイルの...
-
Microsoft VBAで2GBを超えるフ...
-
入力ファイルをバイナリにする利点
-
ページ読み込み時に自動的にsub...
-
エクセルVBA 2千万行のCSVファ...
-
エラー:ストリームの終わりを...
-
EOF
-
VBA バイナリ―から文字列にす...
-
バイナリエディタのつかいかた
-
テキストデータをSQLServerに取...
-
バイナリファイルの検索について
-
バイナリ形式のXMLファイルを読...
-
画像の保存方法。
-
FTPでエクセルをPUTするとファ...
-
バイナリファイルの比較につい...
-
バイナリーデータの一部データ...
-
MacからWinにファイルを添付す...
-
C言語とシリアル通信の送受信...
-
ROM書き込みデータのファイル形...
おすすめ情報