_setmode
Mengatur mode terjemahan file.
Sintaks
int _setmode (
int fd,
int mode
);
Parameter
fd
Pendeskripsi file.
mode
Mode terjemahan baru.
Nilai hasil
Jika berhasil, mengembalikan mode terjemahan sebelumnya.
Jika parameter yang tidak valid diteruskan ke fungsi ini, handler parameter tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini mengembalikan -1 dan diatur errno
ke EBADF
, yang menunjukkan deskriptor file yang tidak valid, atau EINVAL
, yang menunjukkan argumen yang tidak valid mode
.
Untuk informasi selengkapnya tentang kode pengembalian ini dan lainnya, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Keterangan
Fungsi _setmode
diatur ke mode
mode terjemahan file yang diberikan oleh fd
. Meneruskan _O_TEXT
sebagai mode
mengatur teks ANSI (yaitu, diterjemahkan) mode. Kombinasi umpan baris kembali (CR-LF) carriage diterjemahkan ke dalam karakter umpan baris tunggal pada input. Karakter umpan baris diterjemahkan ke dalam kombinasi CR-LF pada output. _O_BINARY
Melewati mode biner (tidak diterjemahkan), di mana terjemahan ini ditekan.
Anda juga dapat meneruskan _O_U16TEXT
, _O_U8TEXT
, atau _O_WTEXT
untuk mengaktifkan mode Unicode, seperti yang ditunjukkan dalam contoh kedua nanti dalam dokumen ini.
Perhatian
Mode Unicode adalah untuk fungsi cetak lebar (misalnya, wprintf
) dan tidak didukung untuk fungsi cetak sempit. Penggunaan fungsi cetak sempit pada aliran mode Unicode memicu pernyataan.
_setmode
biasanya digunakan untuk mengubah mode terjemahan default dan stdin
stdout
, tetapi Anda dapat menggunakannya pada file apa pun. Jika Anda menerapkan _setmode
ke pendeskripsi file untuk aliran, panggil _setmode
sebelum Anda melakukan operasi input atau output apa pun pada aliran.
Perhatian
Jika Anda menulis data ke aliran file, hapus kode secara eksplisit dengan menggunakan fflush
sebelum Anda menggunakan _setmode
untuk mengubah mode. Jika Anda tidak menghapus kode, Anda mungkin mendapatkan perilaku tak terduga. Jika Anda belum menulis data ke aliran, Anda tidak perlu menghapus kode.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan | Header Opsional |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh: Gunakan _setmode
untuk mengubah stdin
// crt_setmode.c
// This program uses _setmode to change
// stdin from text mode to binary mode.
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main( void )
{
int result;
// Set "stdin" to have binary mode:
result = _setmode( _fileno( stdin ), _O_BINARY );
if( result == -1 )
perror( "Cannot set mode" );
else
printf( "'stdin' successfully changed to binary mode\n" );
}
'stdin' successfully changed to binary mode
Contoh: Gunakan _setmode
untuk mengubah stdout
// crt_setmodeunicode.c
// This program uses _setmode to change
// stdout to Unicode. Cyrillic and Ideographic
// characters will appear on the console (if
// your console font supports those character sets).
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
int main(void) {
_setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n");
return 0;
}
Lihat juga
Penanganan file
_creat
, _wcreat
fopen
, _wfopen
_open
, _wopen
_set_fmode
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk