ungetc, ungetwc

Repousse un caractère vers le flux.

int ungetc(
   int c,
   FILE *stream 
);
wint_t ungetwc(
   wint_t c,
   FILE *stream 
);

Paramètres

  • c
    Caractère à renvoyer.

  • stream
    Pointeur vers la structure FILE.

Valeur de retour

En cas de réussite, chacune de ces fonctions retourne l'argument cde caractère*.* Si c ne peut pas être refoulé ou si aucun caractère n'a été lu, le flux d'entrée est inchangé et ungetc retourne EOF; ungetwc retourne WEOF. Si stream est NULL, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, EOF ou WEOF est retourné et errno est affecté à la valeur EINVAL.

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

Notes

La fonction ungetc renvoie le caractère c vers stream et désactive l'indicateur de fin de fichier. Le flux doit être ouvert pour la lecture. Une opération de lecture à venir sur stream commence avec c*.* Une tentative de pousser EOF sur le flux en utilisant ungetc est ignorée.

Les caractères placés sur le flux par ungetc peuvent être effacés si fflush, fseek, fsetpos, ou rewind est appelé avant que le caractère soit lu depuis le flux. L'indicateur de la position du fichier aura la valeur qu'il avait avant que les caractères ont été refoulés. Le stockage externe correspondant au flux reste inchangé. Dans un appel réussi ungetc à un flux de texte, l'indicateur de position de fichier n'est pas spécifié jusqu'à ce que tous les caractères refoulés soient lus ou ignorés. À chaque appel réussi ungetc à un flux binaire, l'indicateur de position de fichier est décrémenté ; si sa valeur était 0 avant un appel, la valeur n'est pas définie après l'appel.

Les résultats sont imprévisibles si ungetc est appelé deux fois sans opération de lecture ou de positionnement de fichier entre les deux appels. Après un appel à fscanf, un appel à ungetc peut échouer à moins qu'une autre opération de lecture (comme getc) a été effectuée. Ceci car fscanf lui-même appelle ungetc.

ungetwc est une version à caractère élargi de ungetc. Toutefois, à chaque appel réussi ungetwc à un texte ou un flux binaire, la valeur de l'indicateur de position de fichier n'est pas spécifiée jusqu'à ce que tous les caractères refoulés soient lus ou ignorés.

Ces fonctions sont des données sécurisées du point de vue du thread et sensibles au lock pendant l'exécution. Pour une version non verrouillante, consultez _ungetc_nolock, _ungetwc_nolock.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_ungettc

ungetc

ungetc

ungetwc

Configuration requise

Routine

En-tête requis

ungetc

<stdio.h>

ungetwc

<stdio.h> ou <wchar.h>

La console n'est pas prise en charge dans les applications Windows Store . Les handles de flux standard associés à la console, stdin, stdout et stderr doivent être redirigés pour que les fonctions runtime C puissent les utiliser dans les applications Windows Store . Pour plus d'informations sur la compatibilité, consultez Compatibilité.

Exemple

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'", 
            result, getchar() );
}
  

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Voir aussi

Référence

E/S de flux

getc, getwc

putc, putwc