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; } }
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!