2012-02-01 16 views
5

Bir dosya okunurken, verilen son karakterin EOF olduğunu anlıyorum. Şimdi, bu dosyada EOF karakterim olduğunda ne olur?Bir EOF karakteri ile dosyanın gerçek sonunu nasıl ayırt edebilirim?

Bir dosyanın "gerçek" ucu ile EOF karakterini nasıl ayırt edebilirim?

+0

Dosyada "EOF karakteri" bulunamıyor. Böyle bir şey yok –

+0

DOS'ta vardı ve hala Windows'da olabilir. Ctrl-Z veya ASCII değeri 26. Hala EOF karakterleriyle dosya üreten böyle bir uygulama, Analitik Gruptan WinQuery adlı bir üründür. – STLDeveloper

cevap

10

Yorumlarımı bir yanıt olarak değiştirmeye karar verdim.

, dosyanızda "EOF karakteri" bulunamıyor çünkü böyle bir şey yok. Temel dosya sistemi bir dosyada kaç bayt olduğunu bilir; Sonun nerede olduğunu öğrenmek için dosyanın içeriğine güvenmiyor.

Kullandığınız C işlevleri EOF (-1) döndürür, ancak bu dosya'dan okunmadı. Bu sadece işlevin size sonuna ulaştığınızı söylemesidir. Ve -1 herhangi bir karakter kümesinde geçerli bir karakter olmadığı için, karışıklık yoktur.

1

C, EOF hakkında konuştuğunuzu varsayarsak, bu bir karakter değildir (dolayısıyla karışıklık yoktur).

+0

Yani, bir dosyaya bir 'EOF' karakteri koyduğumda, dosyanın sonu olarak kayıt olmaz mı? – polemon

+2

A 'char', bir bayttır (8 bit değeri), oysa EOF bir tamsayıdır. EOF karakteri diye bir şey yoktur ve bu yüzden bir dosyaya koyamazsınız. – jdigital

4

Bu soru için bir bağlama ihtiyacınız var. Windows'da, gerçek bir "EOF karakterinin" güncel bir DOS konsepti var - Ctrl-Z. Aslında “sahte” olandan “gerçek” olanı söylemek mümkün değildir; gömülü Ctrl-Z'ye sahip bir dosya, Ctrl-Z'yi dosya karakterinin sonu olarak arayan bir programın perspektifinden bazı gizli verileri içerir. Bu tür bir kodu artık yazmaya çalışmayın - gerekli değil. Taşınabilir C API'sı ve UNIX'te, 32 bit -1 dosya sonu, geçerli bir 8 veya 16 bit karakter olamayan dosya belirtmek için kullanılır, böylece farkı anlamanız kolaydır.

+0

Erm, tamam, sanırım temelde aynı şey olduğunu düşündüğüm EOF ve EOT. Ctrl + D genellikle "dosya sonu" olarak adlandırılır. – polemon

İlgili konular