_setmode
將檔案轉譯模式的設定。
int _setmode (
int fd,
int mode
);
參數
fd
檔案描述項。mode
新的轉譯模式。
傳回值
如果成功的話,會傳回先前的轉譯模式。
如果不正確的參數傳遞至這個函式,無效的參數處理常式會叫用,如所述參數驗證。 如果要繼續,這個函式傳回 – 1 及設定允許執行errno至EBADF,表示無效的檔案描述項,或EINVAL,表示無效的mode引數。
如需有關這些及其他的傳回碼的詳細資訊,請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr。
備註
_setmode函式會設定mode轉譯模式,所給定之檔案的fd。 傳遞_O_TEXT與mode設定 (也就,翻譯) 的文字模式。 送紙 (CR-LF) 組合的換行字元 return–line 會轉譯成單行換頁字元輸入。 列摘要的字元會轉譯成輸出的 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;