C ++ ungetc () - Bibliothèque standard C ++

La fonction ungetc () en C ++ repousse le caractère précédemment lu dans le flux afin qu'il puisse être lu à nouveau.

La fonction ungetc () est définie dans le fichier d'en-tête.

prototype ungetc ()

 int ungetc (int ch, FILE * stream);

La fonction ungetc () repousse le caractère ch vers le tampon associé au flux de fichiers sauf si ch est égal à EOF. Si ch est é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 de fin d'état 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 du 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.
  • stream: flux de fichiers où le personnage est repoussé.

ungetc () Valeur de retour

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

Exemple: Comment fonctionne la fonction ungetc ()?

 #include #include #include 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; )

Lorsque vous exécutez le programme, une sortie possible sera:

 Valeur = 101

Articles intéressants...