Bagaimanakah Saya Boleh Membaca stdin Sehingga EOF dalam C Tanpa Gelung Eksplisit?

Susan Sarandon
Lepaskan: 2024-11-17 04:01:03
asal
745 orang telah melayarinya

How Can I Read stdin Until EOF in C   Without Explicit Loops?

Menangkap Input dari stdin Sehingga EOF tanpa Gelung

Membaca input daripada input standard sehingga akhir fail (EOF) adalah perkara biasa tugas dalam pengaturcaraan C. Biasanya, gelung digunakan untuk mencapai ini, tetapi dalam situasi tertentu, pendekatan bukan gelung mungkin diingini.

Penyelesaian Tanpa Gelung

Malangnya, tiada satu pun , fungsi bukan gelung dalam C yang boleh membaca input dari stdin sehingga EOF. Walau bagaimanapun, menggabungkan pengendali input dan manipulasi rentetan C menawarkan penyelesaian:

char input[1000];
cin.getline(input, 1000);
while (cin.eof() == false) {
    cout << input << endl;
    cin.getline(input, 1000);
}
Salin selepas log masuk

Pendekatan ini menggunakan cin.getline() untuk membaca maksimum 1000 aksara daripada stdin ke dalam tatasusunan input. Ia kemudian menyemak sama ada EOF telah dicapai menggunakan cin.eof(). Jika tidak, ia mencetak input ke konsol dan mengulangi proses sehingga EOF ditemui.

Pendekatan Berasaskan Gelung Terbaik

Jika penyelesaian bukan gelung tidak boleh dilaksanakan atau diingini, pendekatan berasaskan gelung terbaik ialah menggunakan fungsi std::getline():

string line;
while (getline(cin, line)) {
    // Process the line
}
Salin selepas log masuk

Pendekatan ini memasuki gelung yang membaca baris input menggunakan getline() sehingga akhir fail dicapai. getline() mengembalikan false apabila input gagal atau EOF ditemui, menyebabkan gelung ditamatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca stdin Sehingga EOF dalam C Tanpa Gelung Eksplisit?. 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