ungetc, ungetwc

 

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

Exécute un push d’un caractère de retour dans le flux.

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

Paramètres

c
Caractère à être envoyées.

stream
Pointeur vers la structure FILE .

Si réussie, chacune de ces fonctions retourne l’argument de caractère c . Si c ne peuvent pas être déplacées ou si aucun caractère n’a été lu, le flux d’entrée est inchangé et ungetc renvoie EOF; ungetwc returns WEOF. Si stream est NULL, 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, EOF ou WEOF est retourné et errno est défini sur EINVAL.

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

Le ungetc fonction pousse le caractère c sur stream et efface l’indicateur de fin de fichier. Le flux doit être ouvert pour la lecture. Une opération de lecture sur stream commence par c . Une tentative de push EOF sur le flux de données à l’aide de ungetc est ignoré.

Caractères placés sur le flux en ungetc peuvent être effacées si fflush, fseek, fsetpos, ou rewind est appelée avant que le caractère est lu à partir du flux. L’indicateur de position de fichier aura la valeur qu’il avait avant les caractères ont été déplacées. Le stockage externe correspondant dans le flux est inchangé. Sur un bon ungetc appel par rapport à un flux de texte, l’indicateur de position de fichier n’est pas spécifié jusqu'à ce que tous les caractères différée envoyées sont lues ou ignorés. Sur chaque réussie ungetc appel par rapport à un flux binaire, l’indicateur de position de fichier est décrémenté ; si sa valeur était 0 avant un appel, la valeur est indéfinie après l’appel.

Les résultats sont imprévisibles si ungetc est appelé deux fois sans une lecture ou d’une opération de positionnement de fichier entre les deux appels. Après un appel à fscanf, un appel à ungetc peut échouer, sauf si une autre opération de lecture (comme getc) a été effectuée. C’est parce que fscanf à son tour appelle ungetc.

ungetwcest une version à caractère élargi de ungetc. Toutefois, sur chaque réussie ungetwc appel par rapport à un flux de texte ou binaire, la valeur de l’indicateur de position de fichier n’est pas spécifié jusqu'à ce que tous les caractères différée envoyées sont lues ou ignorés.

Ces fonctions sont thread-safe et verrouillent les données sensibles lors de l’exécution. Pour une version sans verrouillage, voir _ungetc_nolock, _ungetwc_nolock.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _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 du Windows 8.x Store. Pour plus d'informations sur la compatibilité, voir 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() );  
}  

  
      521aNumber = 521  
Next character in stream = 'a'  

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

Flux d’e/s
getc, getwc
putc, putwc

Afficher: