I/O aliran
Fungsi-fungsi ini memproses data dalam berbagai ukuran dan format, dari karakter tunggal hingga struktur data besar. Mereka juga menyediakan buffering, yang dapat meningkatkan performa. Ukuran default buffer stream adalah 4K. Rutinitas ini hanya memengaruhi buffer yang dibuat oleh rutinitas pustaka run-time, dan tidak berpengaruh pada buffer yang dibuat oleh sistem operasi.
Mengalirkan rutinitas I/O
Rutin | Menggunakan |
---|---|
clearerr , clearerr_s |
Bersihkan indikator kesalahan untuk aliran |
fclose |
Tutup aliran |
_fcloseall |
Tutup semua aliran terbuka kecuali stdin , stdout , dan stderr |
_fdopen , wfdopen |
Mengaitkan aliran dengan pendeskripsi file dari file terbuka |
feof |
Menguji akhir file pada aliran |
ferror |
Uji kesalahan saat streaming |
fflush |
Menghapus aliran ke buffer atau perangkat penyimpanan |
fgetc , fgetwc |
Membaca karakter dari aliran (versi getc fungsi dan getwc ) |
_fgetchar , _fgetwchar |
Membaca karakter dari stdin (versi getchar fungsi dan getwchar ) |
fgetpos |
Mendapatkan indikator posisi aliran |
fgets , fgetws |
Membaca string dari aliran |
_fileno |
Mendapatkan pendeskripsi file yang terkait dengan aliran |
_flushall |
Menghapus semua aliran ke buffer atau perangkat penyimpanan |
fopen , , _wfopen fopen_s ,_wfopen_s |
Buka aliran |
fprintf , , _fprintf_l fwprintf , _fwprintf_l , fprintf_s , _fprintf_s_l , , , fwprintf_s _fwprintf_s_l |
Menulis data yang diformat untuk dialirkan |
fputc , fputwc |
Menulis karakter ke aliran (versi putc fungsi dan putwc ) |
_fputchar , _fputwchar |
Tulis karakter ke stdout (versi putchar fungsi dan putwchar ) |
fputs , fputws |
Tulis string untuk mengalirkan |
fread |
Membaca data yang tidak diformat dari aliran |
freopen , , _wfreopen freopen_s ,_wfreopen_s |
Menetapkan ulang FILE penunjuk aliran ke file atau perangkat baru |
fscanf , , fscanf_s fwscanf , _fscanf_s_l , , , fwscanf_s _fwscanf_s_l |
Membaca data yang diformat dari aliran |
fseek , _fseeki64 |
Pindahkan posisi file ke lokasi yang diberikan |
fsetpos |
Mengatur indikator posisi aliran |
_fsopen , _wfsopen |
Buka aliran dengan berbagi file |
ftell , _ftelli64 |
Dapatkan posisi file saat ini |
fwrite |
Menulis item data yang tidak diformat untuk dialirkan |
getc , getwc |
Membaca karakter dari aliran (versi fgetc makro dan fgetwc ) |
getchar , getwchar |
Membaca karakter dari stdin (versi fgetchar makro dan fgetwchar ) |
_getmaxstdio |
Mengembalikan jumlah file yang terbuka secara bersamaan yang diizinkan di tingkat I/O aliran. |
gets_s , _getws_s |
Membaca baris dari stdin |
_getw |
Membaca biner int dari aliran |
printf , , _printf_l wprintf , _wprintf_l ,printf_s , _printf_s_l , , , wprintf_s _wprintf_s_l |
Menulis data yang diformat ke stdout |
putc , putwc |
Menulis karakter ke aliran (versi fputc makro dan fputwc ) |
putchar , putwchar |
Tulis karakter ke stdout (versi fputchar makro dan fputwchar ) |
puts , _putws |
Menulis baris ke aliran |
_putw |
Menulis biner int ke aliran |
rewind |
Memindahkan posisi file ke awal aliran |
_rmtmp |
Hapus file sementara yang dibuat oleh tmpfile |
scanf , , _scanf_l wscanf , _wscanf_l ,scanf_s , _scanf_s_l , , , wscanf_s _wscanf_s_l |
Membaca data yang diformat dari stdin |
setbuf |
Mengontrol buffering aliran |
_setmaxstdio |
Atur maksimum untuk jumlah file yang terbuka secara bersamaan di tingkat I/O aliran. |
setvbuf |
Mengontrol buffering stream dan ukuran buffer |
_snprintf , , _snprintf_s _snwprintf , _snprintf_s_l , , , _snwprintf_s _snwprintf_s_l |
Menulis data yang diformat dengan panjang yang ditentukan untuk string |
_snscanf , , _snscanf_s _snwscanf , _snscanf_s_l , , , _snwscanf_s _snwscanf_s_l |
Membaca data yang diformat dengan panjang yang ditentukan dari aliran input standar. |
sprintf , , sprintf_s swprintf , _sprintf_s_l , , , swprintf_s _swprintf_s_l |
Menulis data yang diformat ke string |
sscanf , , swscanf sscanf_s , _sscanf_s_l, , swscanf_s _swscanf_s_l |
Membaca data yang diformat dari string |
_tempnam , _wtempnam |
Hasilkan nama file sementara dalam direktori tertentu |
tmpfile , tmpfile_s |
Membuat file sementara |
tmpnam , , _wtmpnam tmpnam_s ,_wtmpnam_s |
Hasilkan nama file sementara |
ungetc , ungetwc |
Dorong karakter kembali ke aliran |
_vcprintf , , _vcprintf_s _vcwprintf , _vcprintf_s_l , , , _vcwprintf_s _vcwprintf_s_l |
Tulis data yang diformat ke konsol. |
vfprintf , , vfprintf_s vfwprintf , _vfprintf_s_l , , , vfwprintf_s _vfwprintf_s_l |
Menulis data yang diformat untuk dialirkan |
vprintf , , vprintf_s vwprintf , _vprintf_s_l , , , vwprintf_s _vwprintf_s_l |
Menulis data yang diformat ke stdout |
_vsnprintf , , _vsnwprintf vsnprintf_s , _vsnprintf_s , _vsnprintf_s_l , , , _vsnwprintf_s _vsnwprintf_s_l |
Menulis data yang diformat dengan panjang yang ditentukan ke buffer |
vsprintf , , vsprintf_s vswprintf , _vsprintf_s_l , , , vswprintf_s _vswprintf_s_l |
Menulis data yang diformat ke buffer |
Ketika program memulai eksekusi, kode startup secara otomatis membuka beberapa aliran: input standar (ditunjuk oleh stdin
), output standar (ditunjuk oleh stdout
), dan kesalahan standar (ditunjuk oleh stderr
). Aliran ini diarahkan ke konsol (keyboard dan layar) secara default. Gunakan freopen
untuk mengalihkan stdin
, stdout
, atau stderr
ke file disk atau perangkat.
File yang dibuka menggunakan rutinitas aliran di-buffer secara default. Fungsi stdout
dan stderr
dibersihkan setiap kali penuh atau, jika Anda menulis ke perangkat karakter, setelah setiap panggilan pustaka. Jika program berakhir secara abnorrmal, buffer output mungkin tidak dibersihkan, yang mengakibatkan hilangnya data. Gunakan fflush
atau _flushall
untuk memastikan bahwa buffer yang terkait dengan file tertentu dihapus ke sistem operasi, atau semua buffer terbuka dibersihkan. Sistem operasi dapat menyimpan data sebelum menulisnya ke disk. Fitur commit-to-disk memastikan bahwa konten buffer yang dibersihkan tidak hilang jika ada kegagalan sistem.
Ada dua cara untuk menerapkan konten buffer ke disk:
Tautkan dengan file COMMODE. OBJ untuk menetapkan bendera penerapan global. Pengaturan default bendera global adalah
n
, untuk "tanpa penerapan."Atur bendera mode ke
c
denganfopen
atau_fdopen
.
File apa pun yang secara khusus dibuka dengan c
bendera atau n
berperilaku sesuai dengan bendera, terlepas dari status bendera penerapan/tanpa penerapan global.
Jika program Anda tidak secara eksplisit menutup aliran, aliran akan ditutup secara otomatis saat program berakhir. Namun, Anda harus menutup streaming ketika program Anda selesai dengannya, karena jumlah aliran yang dapat terbuka pada satu waktu terbatas. Lihat _setmaxstdio
untuk informasi tentang batas ini.
Input dapat mengikuti output secara langsung hanya dengan panggilan intervensi ke fflush
atau ke fungsi pemosisian file (fseek
, fsetpos
, atau rewind
). Input dapat diikuti dengan output tanpa panggilan intervensi ke fungsi penempatan file, jika operasi input menemukan akhir file.
Lihat juga
Input dan output
Rutinitas runtime Universal C menurut kategori