_setmode
establece el archivo de modalidad de traducción.
int _setmode (
int fd,
int mode
);
Parámetros
fd
Descriptor de archivo.mode
nuevo de modalidad de traducción.
Valor devuelto
Si finaliza correctamente, devuelve el de modalidad de traducción anterior.
Si los parámetros no válidos se pasan a esta función, se invoca el controlador de inválido-parámetro, como se describe en Validación de parámetros.Si la ejecución puede continuar, esta función devuelve – 1 y establece errno a cualquier EBADF, que indica el descriptor de archivo no válido, o a EINVAL, que indica un argumento no válido de mode .
Para obtener más información sobre éstos y otros códigos de retorno, vea _doserrno, errno, _sys_errlist, y _sys_nerr.
Comentarios
La función de _setmode establecida en mode el de modalidad de traducción del archivo especificado por fd.Pasando _O_TEXT como conjuntos de mode text (es decir, traducido) el modo.Las combinaciones de fuentes de la retorno-línea de carro (CR-LF) se convierten en un único carácter de salto de línea de entrada.Los caracteres de salto de línea se convierten en combinaciones de CR-LF en la salida.Pasando el modo (sin traducir) binario de los conjuntos de _O_BINARY , donde se suprimen estas conversiones.
También puede pasar _O_U16TEXT, _O_U8TEXT, o _O_WTEXT para habilitar el modo de Unicode, como se muestra en el segundo ejemplo más adelante en este documento._setmode se utiliza normalmente para modificar el valor predeterminado de modalidad de traducción de stdin y de stdout, pero puede utilizarlo en cualquier archivo.Si se solicita _setmode descriptor de archivo una secuencia, llamada _setmode antes de realizar cualquier operación de entrada o salida en la secuencia.
Precaución |
---|
Si escribe datos en una secuencia de archivo, explícitamente vacíe el código mediante fflush antes de utilizar _setmode para cambiar el modo.Si no vacía el código, podría obtener un comportamiento inesperado.Si no se escribe datos en la secuencia, no tiene que vaciar el código. |
Requisitos
rutina |
Encabezado necesario |
encabezados opcionales |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
Para obtener más información de compatibilidad, vea compatibilidad.
Ejemplo
// 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;