_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;