_setmode
Dosya çeviri modunu ayarlar.
Sözdizimi
int _setmode (
int fd,
int mode
);
Parametreler
fd
Dosya tanımlayıcısı.
mode
Yeni çeviri modu.
Dönüş değeri
Başarılı olursa, önceki çeviri modunu döndürür.
Bu işleve geçersiz parametreler geçirilirse, parametre doğrulama bölümünde açıklandığı gibi invalid-parameter işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlev -1 döndürür ve geçersiz bir dosya tanımlayıcısını veya geçersiz mode
bir bağımsız değişkeni gösteren öğesini olarak ayarlar.errno
EBADF
EINVAL
Bunlar ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
işlevi tarafından _setmode
fd
verilen dosyanın çeviri moduna ayarlarmode
. Olarak mode
geçirildiğinde _O_TEXT
ANSI metni (yani çevrilmiş) modu ayarlanır. Satır başı besleme (CR-LF) birleşimleri, girişte tek satır besleme karakterine çevrilir. Satır akışı karakterleri çıkışta CR-LF birleşimlerine çevrilir. Geçirme _O_BINARY
, bu çevirilerin gizlendiği ikili (çevrilmemiş) modu ayarlar.
Ayrıca, bu belgenin sonraki bölümlerindeki ikinci örnekte gösterildiği gibi Unicode modunu etkinleştirmek için , veya _O_WTEXT
geçirebilirsiniz._O_U16TEXT
_O_U8TEXT
Dikkat
Unicode modu geniş yazdırma işlevlerine (örneğin, wprintf
) yöneliktir ve dar yazdırma işlevleri için desteklenmez. Unicode modu akışında dar bir yazdırma işlevinin kullanılması bir onay tetikler.
_setmode
genellikle ve stdout
'nin stdin
varsayılan çeviri modunu değiştirmek için kullanılır, ancak bunu herhangi bir dosyada kullanabilirsiniz. Bir akış için dosya tanımlayıcısına uygularsanız _setmode
, akışta herhangi bir giriş veya çıkış işlemi gerçekleştirmeden önce çağrısı _setmode
yapın.
Dikkat
Bir dosya akışına veri yazarsanız, modu değiştirmek için kullanmadan _setmode
önce kullanarak fflush
kodu açıkça boşaltın. Kodu boşaltmazsanız beklenmeyen bir davranışla karşınıza çıkabilir. Akışa veri yazmadıysanız kodu temizlemeniz gerekmez.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık | İsteğe Bağlı Üst Bilgiler |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek: Stdin'i değiştirmek için kullanın _setmode
// 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
Örnek: stdout'ları değiştirmek için kullanın _setmode
// 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;
}
Ayrıca bkz.
Dosya işleme
_creat
, _wcreat
fopen
, _wfopen
_open
, _wopen
_set_fmode