共用方式為


_setmode

設定檔案轉譯模式。

int _setmode (    int fd,    int mode  );

參數

  • fd
    檔案描述項。

  • mode
    新的轉譯模式。

傳回值

若成功,會傳回之前的轉譯模式。

若傳遞了無效的參數到此函式,則會叫用無效參數處理常式,如 參數驗證 中所述。 若允許繼續執行,此函式會傳回 –1,並將 errno 設定為 EBADF:表示無效的檔案描述項;或是設定為 EINVAL:表示無效的 mode 引數。

如需有關這些傳回碼和其他傳回碼的詳細資訊,請參閱 _doserrno, errno, _sys_errlist, and _sys_nerr

備註

_setmode 函式會設定 mode 為 fd 所指定之檔案的轉譯模式。 若 mode 設定文字 (亦即:已轉譯) 模式,則傳遞 _O_TEXT。 歸位字元–換行字元 (CR-LF) 的組合會在輸入中轉譯為單行換行字元。 換行字元會在輸出中轉譯為 CR-LF 組合。 傳遞 _O_BINARY 可設定二進位 (未轉譯) 模式,此模式會抑止這些轉譯。

您也可以傳遞 _O_U16TEXT、_O_U8TEXT 或 _O_WTEXT 以啟用 Unicode 模式,本文件稍後的第二個範例即會進行示範。 一般而言會使用 _setmode 修改 stdin 和 stdout 的預設轉譯模式,但您可以將其用於任何檔案。 若您將 _setmode 套用於資料流的檔案描述項,請先呼叫 _setmode,再於資料流上執行任意輸入或輸出作業。

警告

若您將資料寫入檔案資料流,請先使用 fflush 明確地清除代碼,再使用 _setmode 變更模式。若您沒有清除代碼,可能會發生未預期的行為。若您沒有將資料寫入資料流,則不用清除代碼。

需求

常式

必要的標頭

選擇性標頭

_setmode

<io.h>

<fcntl.h>

如需相容性的詳細資訊,請參閱相容性

範例

// 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" );
}
  
// 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;
}

.NET Framework 同等

請參閱

參考

檔案處理

_creat、_wcreat

fopen、_wfopen

_open、_wopen

_set_fmode