Tamat Fail (EOF) Strim Input Standard (stdin)
Apabila menggunakan stdin sebagai sumber input untuk program, adalah lumrah untuk tertanya-tanya jika ia menyokong petunjuk akhir fail (EOF). Sifat input standard berbeza-beza bergantung pada cara ia dikonfigurasikan.
stdin dengan Input daripada Fail
Apabila stdin diubah hala daripada fail, ia sememangnya mempunyai EOF tanda, serupa dengan aliran fail biasa. Ini kerana fail mempunyai titik akhir yang ditentukan dan apabila operasi baca mencapai penghujung fail, keadaan EOF ditemui.
stdin daripada Konsol
Walau bagaimanapun , input stdin daripada konsol, yang dikenali sebagai mod interaktif, sememangnya tidak mempunyai penunjuk EOF. Ini kerana input konsol lazimnya adalah aliran berterusan aksara yang ditaip oleh pengguna.
Mensimulasikan EOF dalam Mod Konsol
Untuk mensimulasikan EOF dalam mod konsol, platform- kombinasi kekunci khusus boleh digunakan:
Setelah menekan kombinasi kekunci ini, program menganggapnya seolah-olah input telah mencapai penghujungnya.
Menambah EOF secara manual pada stdin
Seperti yang dinyatakan sebelum ini, stdin daripada konsol dianggap sebagai strim tak terhingga. Untuk menambah EOF secara manual, pengguna mesti menyatakannya secara eksplisit menggunakan kombinasi kekunci Ctrl D atau Ctrl Z.
Penyelesaian menggunakan Fungsi fread atau baca
Dalam kod yang disediakan sampel menggunakan fread atau baca, gelung akan berterusan selama-lamanya sehingga EOF ditemui. Untuk menambah keadaan EOF secara manual dalam senario ini, gunakan pendekatan berikut:
<br>int c;<br>sementara ((c = read(0, buffer, BUFSIZ)) > 0) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Read and process data from stdin
}
// Apabila Ctrl D atau Ctrl Z ditekan, c akan menjadi -1, menunjukkan EOF
jika (c == -1) {
// Handle EOF condition
}
Dengan cara ini, gelung boleh ditamatkan apabila pengguna menekan gabungan EOF, membenarkan atur cara mengendalikan penghujung input dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah anda boleh mensimulasikan isyarat Tamat Fail (EOF) dalam aliran Input Standard (stdin) apabila ia berada dalam mod interaktif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!