_setmode

设置特定模式匹配的文件。

int _setmode (
   int fd,
   int mode 
);

参数

  • fd
    文件描述符。

  • mode
    新版本模式。

返回值

如果成功,则返回以前的版本模式。

如果无效参数传递给此功能,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,此函数返回 – 1 并将 errno 到任何 EBADF,指示一个文件无效描述符,或 EINVAL,指示无效 mode 参数。

有关这些属性和其他的更多信息返回代码示例,请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr

备注

_setmode 功能设置为 modefd给定的版本架构文件。 通过 _O_TEXT 作为 mode 设置文本 (即转换) 模式。 支持返回换行符 (CR-LF) 组合转换为输入的单个换行符。 换行符转换为输出中 CR-LF 组合。 通过 _O_BINARY 设置二进制 (未转换的) 模式,这些转换被禁止。

还可以通过 _O_U16TEXT, _O_U8TEXT,或者 _启动 Unicode 模式的O_WTEXT ,如第二个示例所示在本文档后面的。 _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