Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah anda boleh mensimulasikan isyarat Tamat Fail (EOF) dalam aliran Input Standard (stdin) apabila ia berada dalam mod interaktif?

Bagaimanakah anda boleh mensimulasikan isyarat Tamat Fail (EOF) dalam aliran Input Standard (stdin) apabila ia berada dalam mod interaktif?

Susan Sarandon
Susan Sarandonasal
2024-10-30 02:48:29823semak imbas

How can you simulate an End of File (EOF) signal in the Standard Input stream (stdin) when it's in interactive mode?

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:

  • Sistem berasaskan Unix: Ctrl D
  • Sistem Windows: Ctrl Z

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

Kenyataan:
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