Partager via


ungetc, ungetwc

Pousse un changements de caractères sur le flux de données.

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

Paramètres

  • c
    Caractère à effectuer un push.

  • stream
    Pointeur vers la structure d' 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 retourne EOFpas affectés et d' ungetc ; retourne WEOFd' ungetwc .Si stream est NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, EOF ou WEOF est retourné et errno a la valeur EINVAL.

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

Notes

La fonction d' ungetc pousse en arrière d' c de caractère vers stream et efface l'indicateur de fin de fichier.Le flux de données doit être ouvert en lecture.Une opération de lecture ultérieure sur stream commence par c*.* Une tentative de effectuer un push EOF sur le flux à l'aide de ungetc est ignorée.

Les caractères placés sur le flux de données par ungetc peuvent être supprimés si fflush, fseek, fsetpos, ou rewind est appelé avant que le caractère soit lu à partir de le flux.L'indicateur de position de fichier aura la valeur qu'il a nécessaires avant que les caractères ont été refoulés.La mémoire externe correspondant au flux est inchangée.Dans un appel réussi d' 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 d' ungetc sur un flux binaire, l'indicateur de position de fichier est décrémenté ; si la valeur était 0 avant qu'un appel, la valeur soit pas défini après l'appel.

Les résultats sont imprévisibles si ungetc est appelé deux fois sans opération de lecture ou d'atteinte de fichier entre les deux appels.Après qu'un appel à fscanf, un appel à ungetc peut échouer à moins qu'une autre opération de lecture (par exemple getc) a été exécutée.En effet fscanf lui-même appelle ungetc.

ungetwc est une version à caractère élargi d' ungetc.Toutefois, à chaque appel réussi d' 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 sensibles thread-safe et de verrou pendant l'exécution.Pour une version non verrouillante, consultez _ungetc_nolock, _ungetwc_nolock.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_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 d' Windows Store .Les handles standard de flux de données associés à la console, stdin, stdout, et stderr, doivent être redirigés pour que les fonctions runtime C peuvent les utiliser dans des applications d' Windows Store .Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

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 l' Exemples d'appel de code non managé.

Voir aussi

Référence

E/S de flux

getc, getwc

putc, putwc