Partager via


_setmode

Définit le mode de traduction des fichiers.

int _setmode (    int fd,    int mode  );

Paramètres

  • fd
    Descripteur de fichier.

  • mode
    Nouveau mode de traduction.

Valeur de retour

En cas de réussite, retourne le mode de traduction précédent.

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. 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 la valeur EINVAL, qui indique un argument mode non valide.

Pour plus d'informations sur ces codes de retour et autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

Notes

La fonction _setmode affecte la valeur mode au mode de traduction du fichier donné par fd. Le passage de la valeur _O_TEXT comme mode définit le mode texte (autrement dit, traduit). Les combinaisons retour chariot/saut de ligne sont traduites en un seul caractère de saut de ligne en entrée. Les caractères de saut de ligne sont traduits en combinaisons retour chariot/saut de ligne en sortie. Le passage de la valeur _O_BINARY définit le mode binaire (non traduit), dans lequel ces traductions sont supprimées.

Vous pouvez également passer les valeurs _O_U16TEXT, _O_U8TEXT ou _O_WTEXT pour activer le mode Unicode, comme illustré dans le second exemple plus loin dans ce document. _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. Si vous appliquez _setmode au descripteur de fichier pour un flux, appelez _setmode avant d'effectuer toute opération d'entrée ou de sortie sur le flux.

Avertissement

Si vous écrivez des données dans un flux de fichiers, videz le code de façon explicite en utilisant fflush avant d'utiliser _setmode pour changer le mode.Si vous ne videz pas le code, un comportement inattendu peut se produire.Si vous n'avez pas écrit de données dans le flux, vous n'avez pas à vider le code.

Configuration requise

Routine

En-tête requis

En-têtes facultatifs

_setmode

<io.h>

<fcntl.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

Exemple

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

Équivalent .NET Framework

Voir aussi

Référence

Gestion de fichiers

_creat, _wcreat

fopen, _wfopen

_open, _wopen

_set_fmode