Rumah > pembangunan bahagian belakang > C++ > Mengapa Kod C Saya Mencetak Baris Terakhir Fail Teks Dua Kali Apabila Membaca Hingga EOF?

Mengapa Kod C Saya Mencetak Baris Terakhir Fail Teks Dua Kali Apabila Membaca Hingga EOF?

Barbara Streisand
Lepaskan: 2024-12-30 04:16:09
asal
980 orang telah melayarinya

Why Does My C   Code Print the Last Line of a Text File Twice When Reading Until EOF?

Membaca dari Fail Teks Sehingga EOF: Menyelesaikan Penduaan Baris Terakhir

Kod C yang disediakan membaca integer daripada fail teks sehingga ia menemui penunjuk akhir fail (EOF). Walau bagaimanapun, ia tersilap mencetak integer terakhir pada fail dua kali. Ini disebabkan oleh cara penunjuk EOF dikendalikan dalam struktur gelung program.

Semasa pelaksanaan, atur cara memasuki gelung yang berterusan sehingga penunjuk EOF dikesan. Apabila gelung itu berulang melalui fail, ia mengambil integer "x" daripada fail dan mencetaknya ke konsol. Walau bagaimanapun, selepas integer terakhir dalam fail dibaca, penunjuk EOF ditemui.

Masalah timbul kerana keadaan gelung menilai EOF selepas mengambil integer terakhir "x". Ini bermakna gelung diteruskan dengan nilai "x" yang sama yang dimuatkan dalam lelaran sebelumnya, mencetaknya dua kali dengan berkesan.

Untuk menyelesaikan isu ini, keadaan gelung harus diubah suai untuk menyemak penunjuk EOF sebelum cuba mengambil integer. Ini boleh dicapai dengan menggunakan struktur gelung yang sedikit berbeza:

while (iFile) {
    int x;
    iFile >> x;
    if (iFile) {
        cerr << x << endl;
    }
}
Salin selepas log masuk

Dalam gelung diubah suai ini, objek "iFile" digunakan sebagai keadaan gelung, yang secara tersirat menyemak penunjuk EOF. Jika "iFile" adalah benar (menunjukkan bahawa fail tidak berada di EOF), program mengambil dan mencetak integer. Jika "iFile" palsu (menunjukkan EOF), gelung akan terkeluar.

Dengan melaksanakan pelarasan ini, atur cara membaca integer daripada fail teks sehingga ia mencapai EOF dan mencetak setiap integer sekali, menyelesaikan isu baris terakhir dicetak dua kali.

Atas ialah kandungan terperinci Mengapa Kod C Saya Mencetak Baris Terakhir Fail Teks Dua Kali Apabila Membaca Hingga EOF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan