_setmode_setmode

Définit le mode de traduction des fichiers.Sets the file translation mode.

SyntaxeSyntax

int _setmode (
   int fd,
   int mode
);

ParamètresParameters

fdfd
Descripteur de fichier.File descriptor.

modemode
Nouveau mode de traduction.New translation mode.

Valeur de retourReturn Value

En cas de réussite, retourne le mode de traduction précédent.If successful, returns the previous translation mode.

Si des paramètres non valides sont passés à cette fonction, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre.If invalid parameters are passed to this function, the invalid-parameter handler is invoked, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, cette fonction retourne-1 et affecte à errno la valeur EBADF, qui indique un descripteur de fichier non valide ou EINVAL, qui indique un argument mode non valide.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.

Pour plus d'informations sur ces codes de retour et autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.For more information about these and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

NotesRemarks

La fonction _setmode définit le mode de traduction du fichier donné par FD.The _setmode function sets to mode the translation mode of the file given by fd. Le passage de _O_TEXT en mode définit le mode texte (autrement dit, traduit).Passing _O_TEXT as mode sets text (that is, translated) mode. Les combinaisons retour chariot-saut de ligne sont traduites en un seul caractère de saut de ligne en entrée.Carriage return-line feed (CR-LF) combinations are translated into a single line feed character on input. Les caractères de saut de ligne sont traduits en combinaisons retour chariot/saut de ligne en sortie.Line feed characters are translated into CR-LF combinations on output. Le passage de _O_BINARY définit le mode binaire (non traduit), dans lequel ces traductions sont supprimées.Passing _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.

Vous pouvez également passer _O_U16TEXT, _O_U8TEXTou _O_WTEXT pour activer le mode Unicode, comme illustré dans le deuxième exemple plus loin dans ce document.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.

Attention

Le mode Unicode est destiné aux fonctions d’impression larges ( wprintfpar exemple,) et n’est pas pris en charge pour les fonctions d’impression étroite.Unicode mode is for wide print functions (for example, wprintf) and is not supported for narrow print functions. L’utilisation d’une fonction d’impression étroite sur un flux en mode Unicode déclenche une assertion.Use of a narrow print function on a Unicode mode stream triggers an assert.

_setmode est généralement utilisé pour modifier le mode de traduction par défaut de stdin et stdout, mais vous pouvez l’utiliser sur n’importe quel fichier._setmode is typically used to modify the default translation mode of stdin and stdout, but you can use it on any file. Si vous appliquez _setmode au descripteur de fichier pour un flux, appelez _setmode avant d’effectuer des opérations d’entrée ou de sortie sur le flux.If you apply _setmode to the file descriptor for a stream, call _setmode before you perform any input or output operations on the stream.

Attention

Si vous écrivez des données dans un flux de fichier, videz explicitement le code à l’aide de fflush avant d’utiliser _setmode pour modifier le mode.If you write data to a file stream, explicitly flush the code by using fflush before you use _setmode to change the mode. Si vous ne videz pas le code, un comportement inattendu peut se produire.If you do not flush the code, you might get unexpected behavior. Si vous n'avez pas écrit de données dans le flux, vous n'avez pas à vider le code.If you have not written data to the stream, you do not have to flush the code.

Configuration requiseRequirements

RoutineRoutine En-tête requisRequired header En-têtes facultatifsOptional Headers
_setmode_setmode <io.h><io.h> <fcntl.h><fcntl.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.For more compatibility information, see Compatibility.

ExempleExample

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

ExempleExample

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

Voir aussiSee also

Gestion de fichiersFile Handling
_creat, _wcreat_creat, _wcreat
fopen, _wfopenfopen, _wfopen
_open, _wopen_open, _wopen
_set_fmode_set_fmode