C ++ ungetc ()

La fonction ungetc () est définie dansEn tête de fichier.

prototype ungetc ()

int ungetc (int ch, FILE * stream);

La fonction ungetc () pousse le caractèrechretour au tampon associé au flux de fichiers sauf sichest égal à EOF. Sichest égal à EOF, l’opération échoue et il n’y a pas de changement dans le flux.

Les appels à ungetc () peuvent échouer s’il est appelé plus d’une fois sans aucune opération de lecture ou de repositionnement au milieu.

Si un appel à ungetc () réussit, l’indicateur d’état de fin de fichier feof est effacé.

Pour les flux binaires, un appel réussi à ungetc décrémente l’indicateur de position du flux de un. Si l’indicateur de position de flux est nul, le comportement est indéterminé.

Pour le flux de texte, un appel réussi à ungetc modifie l’indicateur de position du flux d’une manière non spécifiée. Mais il est garanti qu’après que tous les caractères repoussés ont été récupérés avec une opération de lecture, l’indicateur de position du flux est égal à sa valeur avant d’appeler ungetc ().


Paramètres ungetc ()

  • ch: Le personnage à repousser.
  • courant: Flux de fichiers où le personnage est repoussé.

ungetc () Valeur de retour

  • En cas de succès, la fonction ungetc () renvoie le caractèrech.
  • En cas d’échec, EOF est renvoyé sans modifier le flux.

Exemple: Comment fonctionne la fonction ungetc ()?

 #include <cstdio>
#include <cctype>
#include <iostream>
using namespace std;

int main()
{
int c;
long value = 0;
char str[] = "101axc";

FILE *fp = fopen("file.txt", "r+");
fputs(str,fp);
rewind(fp);

while(1)
{
c = fgetc(fp);
if (isdigit(c))
value = value*10 + c - '0';
else
break;
}

ungetc(c, fp);
cout << "Value = " << value << endl;
fclose(fp);

return 0;
}