EOF
私は、テキスト ファイルの終わりを示すためにテキスト ファイルの最後に自動的に挿入される特殊文字であるという知識で、ここまで管理してきました。しかし、私は今、これについてもう少し明確にする必要があると感じています. Google とウィキペディアのページで確認しましたEOF
が、次の質問に答えることができませんでした。また、これに対する正確なスタック オーバーフロー リンクもありません。だからこれについて私を助けてください:
私の本によると、バイナリ モード ファイルは、ファイルのディレクトリ エントリに存在する文字数からファイルの終わりを追跡します。(終了を示す特殊な EOF 文字を持つテキスト ファイルとは対照的です)。
EOF
では、バイナリ ファイルのコンテキストではどのような話になるのでしょうか? 次のプログラムでは、ファイルからバイナリモードで!=EOF
読み取り中に比較を正常に使用しているため、混乱しています。.exe
#include<stdio.h> #include<stdlib.h> int main() { int ch; FILE *fp1,*fp2; fp1=fopen("source.exe","rb"); fp2=fopen("dest.exe","wb"); if(fp1==NULL||fp2==NULL) { printf("Error opening files"); exit(-1); } while((ch=getc(fp1))!=EOF) putc(ch,fp2); fclose(fp1); fclose(fp2); }
EOF
特別な「キャラクター」ですか?それとも、ウィキペディアが言うように、コンピューターが特定の値をいつ返すかを知っている状態ですか-1
(EOF
私のコンピューターで)? そのような「状態」の例は、文字読み取り関数が存在するすべての文字の読み取りを終了したとき、または文字/文字列 I/O 関数が読み取り/書き込みでエラーに遭遇したときですか?興味深いことに、 のスタック オーバーフロー タグ
EOF
は、EOF
. 「プログラミング領域では、EOF は一連のバイト (または文字) であり、この後にコンテンツがないことを示します」EOF
というタグ。、「ファイルの終わり(一般にEOFと略される)は、データソースからデータを読み取ることができないコンピューターオペレーティングシステムの状態です。データソースは通常、ファイルまたはストリーム。"
EOF
しかし、I / O中にエラーが発生したときに他のすべての関数がそれを返すように見えるので、私はキャラクターにはならないだろうと強く感じています。
私に代わって問題を解決していただければ、本当に助かります。