Sunday, 6 August 2017

Pilihan Freopen Stdin Biner


Jawaban yang sederhana adalah tidak. Modusnya ditentukan saat objek iostream dibuat, dan tidak bisa diubah lagi nanti. Beberapa implementasi mungkin menyediakan sarana untuk melakukannya nanti, tapi ini tidak standar. Pada beberapa implementasi, melakukan freopen pada stdout mungkin mengubah mode, walaupun menurut saya secara formal, ini dilarang di C. (Ini adalah implementasi yang didefinisikan dalam C.) Dan ternyata, ini tidak sesuai dengan implementasi Anda. Youre best bet adalah untuk mengetahui bagaimana nama sistem Anda perangkat konsol (devtty di bawah Unix CONS. Saya pikir, di bawah Windows), buka dalam mode yang diinginkan, dan output ke dalamnya. Dijawab 16 Apr 14 at 11: 34Reopen stream dengan berbagai file atau mode Menggunakan kembali aliran baik untuk membuka file yang ditentukan oleh nama file atau untuk mengubah mode aksesnya. Jika nama file baru ditentukan, fungsi pertama-tama mencoba untuk menutup file yang telah dikaitkan dengan arus (parameter ketiga) dan melepaskannya. Kemudian, terlepas dari apakah aliran itu berhasil ditutup atau tidak, freopen membuka file yang ditentukan oleh nama file dan mengaitkannya dengan arus seperti yang dilakukan fopen dengan menggunakan mode yang ditentukan. Jika nama file adalah pointer nol, fungsinya mencoba mengubah mode arus. Meskipun penerapan perpustakaan tertentu diperbolehkan untuk membatasi perubahan yang diizinkan, dan dalam keadaan apa. Indikator kesalahan dan indikator eof secara otomatis dibersihkan (seolah-olah clearerr dipanggil). Fungsi ini sangat berguna untuk mengalihkan aliran yang telah ditentukan seperti stdin. Stdout dan stderr ke file tertentu (lihat contoh di bawah). Parameter filename C string berisi nama file yang akan dibuka. Nilainya harus mengikuti spesifikasi nama file dari lingkungan yang sedang berjalan dan dapat mencakup jalur (jika didukung oleh sistem). Jika parameter ini adalah pointer null, fungsinya mencoba mengubah mode stream. Seolah-olah nama file yang saat ini terkait dengan aliran itu telah digunakan. Mode C string yang berisi mode akses file. Bisa dibaca: baca: Buka file untuk operasi input. File harus ada Tulis: Buat file kosong untuk operasi output. Jika file dengan nama yang sama sudah ada, isinya akan dibuang dan file tersebut diperlakukan sebagai file kosong baru. Tambahkan: Buka file untuk output di akhir file. Operasi keluaran selalu menulis data di akhir file, memperluasnya. Reposisi operasi (fseek. Fsetpos rewind) diabaikan. File dibuat jika tidak ada. Readupdate: Buka file untuk update (baik untuk input dan output). File harus ada Writeupdate: Buat file kosong dan buka untuk update (baik untuk input dan output). Jika file dengan nama yang sama sudah ada isinya akan dibuang dan file tersebut diperlakukan sebagai file kosong baru. Appendupdate: Buka file untuk update (baik untuk input dan output) dengan semua output operasi menulis data di akhir file. Reposisi operasi (fseek. Fsetpos rewind) mempengaruhi operasi masukan berikutnya, namun operasi keluaran memindahkan posisi kembali ke akhir file. File dibuat jika tidak ada. Dengan mode specifiers diatas file terbuka sebagai file teks. Untuk membuka file sebagai file biner. Karakter b harus disertakan dalam mode string. Karakter b tambahan ini dapat ditambahkan pada akhir string (dengan demikian membuat mode majemuk berikut: rb, wb, ab, rb, wb, ab) atau dimasukkan di antara huruf dan tanda untuk mode campuran (rb, Wb, ab). Standar C yang baru (C2011, yang bukan bagian dari C) menambahkan subspecifier standar baru (x), yang dapat ditambahkan ke w specifier manapun (untuk membentuk wx wbx. Wx atau wbxwbx). Subspecifier ini memaksa fungsi gagal jika file ada, alih-alih menimpanya. Jika karakter tambahan mengikuti urutan, perilaku tergantung pada implementasi perpustakaan: beberapa implementasi mungkin mengabaikan karakter tambahan sehingga misalnya t tambahan (terkadang digunakan untuk menyatakan file teks secara eksplisit) diterima. Pada beberapa implementasi perpustakaan, membuka atau membuat file teks dengan mode update dapat memperlakukan stream sebagai file biner. Stream pointer ke objek FILE yang mengidentifikasi stream untuk dibuka kembali. Nilai Kembali Jika file berhasil dibuka kembali, fungsi mengembalikan pointer dilewatkan sebagai stream parameter. Yang dapat digunakan untuk mengidentifikasi arus yang dibuka kembali. Jika tidak, pointer null dikembalikan. Pada sebagian besar implementasi perpustakaan, variabel errno juga disetel ke kode kesalahan spesifik sistem pada kegagalan. Opens file yang namanya ditentukan dalam nama file parameter dan mengaitkannya dengan arus yang dapat diidentifikasi pada operasi masa depan oleh penunjuk FILE yang dikembalikan . Operasi yang diizinkan di arus dan bagaimana hal ini dilakukan ditentukan oleh parameter mode. Aliran yang dikembalikan sepenuhnya disangga secara default jika diketahui tidak merujuk ke perangkat interaktif (lihat setbuf). Penunjuk yang dikembalikan dapat dipisahkan dari file dengan memanggil fclose atau freopen. Semua file yang dibuka secara otomatis ditutup pada penghentian program normal. Lingkungan yang berjalan mendukung setidaknya file FOPENMAX yang terbuka secara bersamaan. Parameter filename C string berisi nama file yang akan dibuka. Nilainya harus mengikuti spesifikasi nama file dari lingkungan yang sedang berjalan dan dapat mencakup jalur (jika didukung oleh sistem). Mode C string yang berisi mode akses file. Bisa dibaca: baca: Buka file untuk operasi input. File harus ada Tulis: Buat file kosong untuk operasi output. Jika file dengan nama yang sama sudah ada, isinya akan dibuang dan file tersebut diperlakukan sebagai file kosong baru. Tambahkan: Buka file untuk output di akhir file. Operasi keluaran selalu menulis data di akhir file, memperluasnya. Reposisi operasi (fseek. Fsetpos rewind) diabaikan. File dibuat jika tidak ada. Readupdate: Buka file untuk update (baik untuk input dan output). File harus ada Writeupdate: Buat file kosong dan buka untuk update (baik untuk input dan output). Jika file dengan nama yang sama sudah ada isinya akan dibuang dan file tersebut diperlakukan sebagai file kosong baru. Appendupdate: Buka file untuk update (baik untuk input dan output) dengan semua output operasi menulis data di akhir file. Reposisi operasi (fseek. Fsetpos rewind) mempengaruhi operasi masukan berikutnya, namun operasi keluaran memindahkan posisi kembali ke akhir file. File dibuat jika tidak ada. Dengan mode specifiers diatas file terbuka sebagai file teks. Untuk membuka file sebagai file biner. Karakter b harus disertakan dalam mode string. Karakter b tambahan ini dapat ditambahkan pada akhir string (dengan demikian membuat mode majemuk berikut: rb, wb, ab, rb, wb, ab) atau dimasukkan di antara huruf dan tanda untuk mode campuran (rb, Wb, ab). Standar C yang baru (C2011, yang bukan bagian dari C) menambahkan subspecifier standar baru (x), yang dapat ditambahkan ke w specifier manapun (untuk membentuk wx wbx. Wx atau wbxwbx). Subspecifier ini memaksa fungsi gagal jika file ada, alih-alih menimpanya. Jika karakter tambahan mengikuti urutan, perilaku tergantung pada implementasi perpustakaan: beberapa implementasi mungkin mengabaikan karakter tambahan sehingga misalnya t tambahan (terkadang digunakan untuk menyatakan file teks secara eksplisit) diterima. Pada beberapa implementasi perpustakaan, membuka atau membuat file teks dengan mode update dapat memperlakukan stream sebagai file biner. File teks adalah file yang berisi urutan baris teks. Bergantung pada lingkungan di mana aplikasi berjalan, beberapa konversi karakter khusus dapat terjadi dalam operasi inputoutput dalam mode teks untuk menyesuaikannya dengan format file teks sistem tertentu. Meskipun pada beberapa lingkungan tidak ada konversi yang terjadi dan kedua file teks dan file biner diperlakukan dengan cara yang sama, dengan menggunakan mode yang sesuai akan meningkatkan portabilitas. Untuk file yang terbuka untuk update (yang termasuk tanda), dimana operasi input dan output diperbolehkan, arus harus disiram (fflush) atau direposisi (fseek. fsetpos rewind) sebelum operasi membaca yang mengikuti operasi penulisan. Arus harus direposisi (fseek, fsetpos rewind) sebelum operasi penulisan yang mengikuti operasi pembacaan (kapan pun operasi tersebut tidak sampai pada akhir file). Nilai Kembali Jika file berhasil dibuka, fungsi mengembalikan pointer ke objek FILE yang dapat digunakan untuk mengidentifikasi arus pada operasi masa depan. Jika tidak, pointer null dikembalikan. Pada sebagian besar implementasi perpustakaan, variabel errno juga diatur ke kode kesalahan spesifik sistem pada fail. fopen, wfopen Files dibuka untuk penulisan dalam mode Unicode agar BOM ditulis secara otomatis. Jika mode adalah, ccsltencodinggt, fopen pertama kali mencoba membuka file dengan menggunakan akses baca dan tulis. Jika ini berhasil, fungsi membaca BOM untuk menentukan pengkodean file jika gagal, fungsi menggunakan pengkodean default untuk file tersebut. Dalam kedua kasus, fopen kemudian akan membuka kembali file tersebut dengan menggunakan akses hanya tulis. (Ini hanya berlaku untuk mode, bukan ke mode.) Pemetaan Rutin Teks Generik UNICODE amp MBCS tidak didefinisikan Mode string karakter menentukan jenis akses yang diminta untuk file tersebut, sebagai berikut. R Membuka untuk membaca. Jika file tidak ada atau tidak dapat ditemukan, panggilan fopen gagal. W Membuka sebuah file kosong untuk ditulis. Jika file yang diberikan ada, isinya hancur. Membuka untuk menulis di akhir file (menambahkan) tanpa melepaskan penanda akhir-akhir (EOF) sebelum data baru ditulis ke file. Membuat file jika tidak ada. R Membuka untuk membaca dan menulis. File harus ada W Membuka file kosong untuk membaca dan menulis. Jika file itu ada, isinya hancur. Membuka untuk membaca dan menambahkan. Operasi tambahan mencakup pemindahan penanda EOF sebelum data baru ditulis ke file. Penanda EOF tidak dipulihkan setelah penulisan selesai. Membuat file jika tidak ada. Saat file dibuka dengan menggunakan tipe akses atau tipe akses, semua operasi penulisan terjadi di akhir file. File pointer dapat direposisi ulang dengan menggunakan fseek atau rewind. Tapi selalu dipindahkan kembali ke akhir file sebelum operasi tulis dilakukan. Oleh karena itu, data yang ada tidak bisa ditimpa. Modus tidak menghapus penanda EOF sebelum ditambahkan ke file. Setelah menambahkan telah terjadi, perintah MS-DOS TYPE hanya menampilkan data sampai ke penanda EOF asli dan tidak ada data yang ditambahkan ke file. Sebelum ditambahkan ke file, mode menghapus spidol EOF. Setelah menambahkan, perintah MS-DOS TYPE menampilkan semua data dalam file. Mode ini diperlukan untuk menambahkan ke file stream yang diakhiri dengan penanda EOF CTRLZ. Saat r. W. Atau tipe akses yang ditentukan, baik pembacaan maupun penulisan diaktifkan (file dikatakan terbuka untuk pembaruan). Namun, saat Anda beralih dari membaca ke menulis, operasi masukan harus menemukan penanda EOF. Jika tidak ada EOF, Anda harus menggunakan panggilan campur tangan untuk fungsi penentuan posisi file. Fungsi pemosisian file adalah fsetpos. Fseek Dan mundur Bila Anda beralih dari menulis ke membaca, Anda harus menggunakan panggilan campur tangan untuk fflush atau fungsi pemosisian file. Selain nilai sebelumnya, karakter berikut dapat ditambahkan ke mode untuk menentukan mode terjemahan untuk karakter baris baru. T Buka dalam mode teks (terjemahkan). Dalam mode ini, CTRLZ diinterpretasikan sebagai karakter EOF pada input. Dalam file yang dibuka untuk membaca tulisan dengan menggunakan a. Fopen memeriksa CTRLZ di akhir file dan menghapusnya, jika memungkinkan. Hal ini dilakukan karena menggunakan fseek dan ftell untuk bergerak dalam file yang diakhiri dengan CTRLZ dapat menyebabkan fseek untuk berperilaku tidak benar di dekat akhir file. Dalam mode teks, kombinasi carriage returnlinefeed diterjemahkan ke dalam single line feed pada input, dan karakter linefeed diterjemahkan ke kombinasi carriage returnlinefeed pada output. Ketika fungsi Unicode stream-IO beroperasi dalam mode teks (default), aliran sumber atau tujuan diasumsikan sebagai urutan karakter multibyte. Oleh karena itu, fungsi input-stream Unicode mengubah karakter multibyte menjadi karakter lebar (seolah-olah dengan panggilan ke fungsi mbtowc). Untuk alasan yang sama, fungsi stream-output Unicode mengubah karakter lebar menjadi karakter multibyte (seolah-olah dengan panggilan ke fungsi wctomb). B Buka dalam terjemahan mode biner (yang tidak diterjemahkan) yang melibatkan karakter carriage-return dan linefeed yang ditekan. Jika t atau b tidak diberikan dalam mode. Mode terjemahan default didefinisikan oleh variabel global fmode. Jika t atau b diawali dengan argumen, fungsi gagal dan mengembalikan NULL. Untuk informasi lebih lanjut tentang bagaimana menggunakan mode teks dan biner di Unicode dan multibyte stream-IO, lihat File Mode Teks dan Biner IO dan Unicode Stream IO dalam Mode Teks dan Biner. C Aktifkan flag komit untuk nama file yang terkait sehingga isi buffer file ditulis langsung ke disk jika ada fflush atau flushall yang dipanggil. N Reset flag komit untuk nama file yang terkait ke no-commit. Ini adalah defaultnya. Ini juga mengesampingkan komit komit global jika Anda menghubungkan program Anda dengan COMMODE. OBJ. Default flag komit global adalah no-commit kecuali Anda secara eksplisit menghubungkan program Anda dengan COMMODE. OBJ (lihat Opsi Tautan). N Menentukan bahwa file tidak diwarisi oleh proses anak. S Menentukan bahwa caching dioptimalkan untuk, namun tidak terbatas pada, akses sekuensial dari disk. R Menentukan bahwa caching dioptimalkan untuk, namun tidak terbatas pada, akses acak dari disk. T Menentukan sebuah file sebagai sementara. Jika memungkinkan, tidak memerah ke disk. D Menentukan sebuah file sebagai sementara. Ini akan dihapus saat pointer file terakhir ditutup. CcsENCODING Menentukan karakter kode yang dikodekan untuk digunakan (UTF-8. UTF-16LE atau UNICODE) untuk file ini. Biarkan tidak disebutkan apakah Anda ingin ANSI encoding. Karakter yang valid untuk string mode yang digunakan dalam fopen dan fdopen sesuai dengan argumen butiran yang digunakan secara terbuka dan sopen. sebagai berikut. Karakter dalam mode string Setara nilai rata untuk sopen terbuka

No comments:

Post a Comment