Rumah >pembangunan bahagian belakang >C++ >Bagaimana Anda Mensimulasikan EOF pada Input Standard (stdin)?

Bagaimana Anda Mensimulasikan EOF pada Input Standard (stdin)?

DDD
DDDasal
2024-10-27 23:29:29795semak imbas

How Do You Simulate EOF on Standard Input (stdin)?

Menentukan EOF Strim Input Standard (stdin)

Dalam pengaturcaraan, sumber input biasa ialah aliran input standard (stdin), yang membaca input daripada papan kekunci pengguna . Walau bagaimanapun, menentukan bila pengguna telah selesai memasukkan data dan mencapai penghujung fail (EOF) kadangkala boleh mencabar.

Adakah stdin Mempunyai EOF?

Secara lalai , stdin sememangnya tidak mempunyai EOF. Ini bermakna pembacaan program daripada stdin akan diteruskan selama-lamanya, menunggu lebih banyak input daripada pengguna.

Menambah EOF pada stdin

Jika anda perlu mensimulasikan EOF secara manual pada stdin, dua kaedah biasa ialah:

  • Ctrl D (UNIX): Dalam sistem berasaskan UNIX, menekan Ctrl D menandakan hujung fail.
  • Ctrl Z (Windows): Dalam OS Windows, menekan Ctrl Z biasanya menunjukkan penamatan input.

Contoh:

Yang berikut coretan kod menggunakan fread untuk membaca dari stdin dan menyemak EOF menggunakan Ctrl D:

<code class="c">#include <stdio.h>

int main() {
    char buffer[BUFSIZ];
    int c;
    
    while ((c = fread(buffer, sizeof(char), BUFSIZ, stdin)) > 0) {
        // Process input...
    }

    return 0;
}</code>

Apabila pengguna menekan Ctrl D, fungsi fread() akan kembali -1, menunjukkan penghujung fail. Ini mencetuskan penghujung gelung while.

Nota:

Adalah penting untuk ambil perhatian bahawa kaedah simulasi EOF yang diterangkan di atas adalah bergantung kepada sistem dan mungkin tidak berfungsi secara konsisten merentasi semua platform.

Atas ialah kandungan terperinci Bagaimana Anda Mensimulasikan EOF pada Input Standard (stdin)?. 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