
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とは何だろう?
と思ったのです。
みなさまもおかげですっきりいたしました。
ありがとうございました。

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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
C言語の質問です。バイナリ形...
-
EOF
-
【Teraterm】filewritelnについて
-
バッファとは何ですか
-
【MFC】CFileでSeekした位置か...
-
Microsoft VBAで2GBを超えるフ...
-
ページ読み込み時に自動的にsub...
-
24ビットのWaveデータの中身に...
-
fwriteでの書き込み
-
EXCEL VBAでテキストファイルの...
-
エクセルVBA 2千万行のCSVファ...
-
HDDのバイナリイメージの取得方...
-
C言語初心者の質問失礼します。
-
Access クエリ実行が急に非常に...
-
どんなプログラムを書いても指...
-
コマンド(例えばls)の出力結果...
-
FTPでputすると空ファイルが出...
-
VB.NETで他のプロジェクトで作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
エラー:ストリームの終わりを...
-
ページ読み込み時に自動的にsub...
-
VBA バイナリ―から文字列にす...
-
EOF
-
入力ファイルをバイナリにする利点
-
EXCEL VBAでテキストファイルの...
-
【python】Excelファイルを読み...
-
関数の容量を知るには?
-
MacからWinにファイルを添付す...
-
= (イコール)で始まるセルの値...
-
EXCEL VBAで、バイナリデータの...
-
BMP画像の画像データ本体をテキ...
-
VC++2010でmecabを使いたい
-
C言語とシリアル通信の送受信...
-
ファイルをダウンロードして展...
-
バイナリーデータの一部データ...
-
wave形式(*.wav)のフォーマット...
-
C言語のプログラムについて質問...
おすすめ情報