_setmode
Establece el modo de traducción del archivo.
int _setmode ( int fd, int mode );
Parámetros
fd
Descriptor del archivo.mode
Nuevo modo de traducción.
Valor devuelto
Si es correcto, devuelve el modo de traducción anterior.
Si se pasan parámetros no válidos a esta función, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, esta función devuelve –1 y establece errno en EBADF (que indica un descriptor de archivo no válido) o en EINVAL (que indica un argumento mode no válido).
Para obtener más información sobre estos y otros códigos de retorno, vea _doserrno, errno, _sys_errlist y _sys_nerr.
Comentarios
La función _setmode establece en mode el modo de traducción del archivo proporcionado por fd. Si se pasa _O_TEXT como mode, se establece el modo de texto (esto es, traducido). Las combinaciones retorno de carro-salto de línea (CR-LF) se traducen en un carácter de salto de línea único en la entrada. Los caracteres de salto de línea se traducen a combinaciones CR-LF en la salida. Si se pasa _O_BINARY, se establece el modo binario (sin traducir), donde se eliminan las traducciones.
También se puede pasar _O_U16TEXT, _O_U8TEXT o _O_WTEXT para habilitar el modo Unicode, tal y como se refleja en el segundo ejemplo recogido más adelante en este documento. _setmode se suele usar para cambiar el modo de traducción predeterminado de stdin y stdout, pero se puede usar en cualquier archivo. Si aplica _setmode al descriptor de archivo de un flujo, llame a _setmode antes de realizar una operación de entrada o de salida en el flujo.
Advertencia
Si escribe datos en un flujo de archivo, vuelque el código expresamente mediante fflush antes de usar _setmode para cambiar el modo.Si no vuelca el código, podría producirse un comportamiento inesperado.Si no ha escrito datos en el flujo, no será necesario volcarlo.
Requisitos
Rutina |
Encabezado necesario |
Encabezados opcionales |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
Para obtener más información sobre 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;
}