_setmode_setmode

Establece el modo de traducción del archivo.Sets the file translation mode.

SintaxisSyntax

int _setmode (
   int fd,
   int mode
);

ParámetrosParameters

FDfd
Descriptor del archivo.File descriptor.

modemode
Nuevo modo de traducción.New translation mode.

Valor devueltoReturn Value

Si es correcto, devuelve el modo de traducción anterior.If successful, returns the previous translation mode.

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.If invalid parameters are passed to this function, the invalid-parameter handler is invoked, as described in Parameter Validation. 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 EINVAL, que indica un argumento de modo no válido.If execution is allowed to continue, this function returns -1 and sets errno to either EBADF, which indicates an invalid file descriptor, or EINVAL, which indicates an invalid mode argument.

Para obtener más información sobre estos y otros códigos de retorno, vea _doserrno, errno, _sys_errlist y _sys_nerr.For more information about these and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

ObservacionesRemarks

La función _setmode establece en el modo de traducción del archivo proporcionado por FD.The _setmode function sets to mode the translation mode of the file given by fd. Al pasar _O_TEXT como modo , se establece el modo de texto (es decir, traducido).Passing _O_TEXT as mode sets text (that is, translated) mode. Las combinaciones de retorno de carro y avance de línea (CR-LF) se traducen en un carácter de salto de línea único en la entrada.Carriage return-line feed (CR-LF) combinations are translated into a single line feed character on input. Los caracteres de salto de línea se traducen a combinaciones CR-LF en la salida.Line feed characters are translated into CR-LF combinations on output. Al pasar _O_BINARY , se establece el modo binario (sin traducir), en el que se suprimen estas traducciones.Passing _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.

También puede pasar _O_U16TEXT, _O_U8TEXTo _O_WTEXT para habilitar el modo Unicode, tal como se muestra en el segundo ejemplo más adelante en este documento.You can also pass _O_U16TEXT, _O_U8TEXT, or _O_WTEXT to enable Unicode mode, as demonstrated in the second example later in this document.

Precaución

El modo Unicode es para las funciones de impresión anchas (por ejemplo, wprintf ) y no se admite para las funciones de impresión estrechas.Unicode mode is for wide print functions (for example, wprintf) and is not supported for narrow print functions. El uso de una función de impresión estrecha en una secuencia en modo Unicode desencadena una aserción.Use of a narrow print function on a Unicode mode stream triggers an assert.

Normalmente, _setmode se usa para modificar el modo de traducción predeterminado de stdin y stdout, pero se puede utilizar en cualquier archivo._setmode is typically used to modify the default translation mode of stdin and stdout, but you can use it on any file. Si aplica _setmode al descriptor de archivo de un flujo, llame a _setmode antes de realizar cualquier operación de entrada o salida en la secuencia.If you apply _setmode to the file descriptor for a stream, call _setmode before you perform any input or output operations on the stream.

Precaución

Si escribe datos en una secuencia de archivos, vacíe explícitamente el código mediante fflush antes de usar _setmode para cambiar el modo.If you write data to a file stream, explicitly flush the code by using fflush before you use _setmode to change the mode. Si no vuelca el código, podría producirse un comportamiento inesperado.If you do not flush the code, you might get unexpected behavior. Si no ha escrito datos en el flujo, no será necesario volcarlo.If you have not written data to the stream, you do not have to flush the code.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header Encabezados opcionalesOptional Headers
_setmode_setmode <io.h> <fcntl.h>

Para obtener más información sobre compatibilidad, vea Compatibility.For more compatibility information, see Compatibility.

Ejemplo: usar _setmode para cambiar stdinExample: Use _setmode to change stdin

// 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" );
}
'stdin' successfully changed to binary mode

Ejemplo: usar _setmode para cambiar stdoutExample: Use _setmode to change stdout

// 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;
}

Vea tambiénSee also

Control de archivosFile Handling
_creat, _wcreat_creat, _wcreat
fopen, _wfopenfopen, _wfopen
_open, _wopen_open, _wopen
_set_fmode_set_fmode