ungetc, ungetwc

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

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.

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.

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
_ungettcungetcungetcungetwc
RoutineEn-tête requis
ungetc<stdio.h>
ungetwc<stdio.h> ou <wchar.h>

La console n'est pas prise en charge dans les applications Windows 8.x 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 8.x Store . Pour plus d'informations sur la compatibilité, consultez Compatibilité.

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

Nombre 521a = 521
Caractère suivant du flux = « a »

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

E/S de flux
getc, getwc
putc, putwc

Afficher: