Aracılığıyla paylaş


_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.errnoEBADFEINVAL

Bunlar ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

işlevi tarafından _setmodefdverilen 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.

_setmodegenellikle 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