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

Equivalente de .NET Framework

Vea también

Referencia

Control de archivos

_creat, _wcreat

fopen, _wfopen

_open, _wopen

_set_fmode