C ++ ungetc () - Libreria standard C ++

La funzione ungetc () in C ++ rimanda il carattere letto in precedenza nello stream in modo che possa essere letto di nuovo.

La funzione ungetc () è definita nel file di intestazione.

ungetc () prototipo

 int ungetc (int ch, FILE * stream);

La funzione ungetc () spinge il carattere ch indietro nel buffer associato al flusso di file a meno che ch non sia uguale a EOF. Se ch è uguale a EOF, l'operazione non riesce e non vi è alcun cambiamento nel flusso.

Le chiamate a ungetc () possono fallire se viene chiamato più di una volta senza alcuna operazione di lettura o riposizionamento nel mezzo.

Se una chiamata a ungetc () ha successo, il flag di stato di fine file feof viene cancellato.

Per i flussi binari, una chiamata riuscita a ungetc diminuisce di uno l'indicatore di posizione del flusso. Se l'indicatore di posizione del flusso è zero, il comportamento è indeterminato.

Per il flusso di testo, una chiamata riuscita a ungetc modifica l'indicatore di posizione del flusso in un modo non specificato. Ma è garantito che dopo che tutti i caratteri respinti sono stati recuperati con un'operazione di lettura, l'indicatore di posizione del flusso è uguale al suo valore prima di chiamare ungetc ().

Parametri ungetc ()

  • ch: Il personaggio da respingere.
  • stream: flusso di file in cui il personaggio viene respinto.

ungetc () Restituisce il valore

  • In caso di successo, la funzione ungetc () restituisce il carattere ch.
  • In caso di errore, viene restituito EOF senza modificare il flusso.

Esempio: come funziona la funzione 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; )

Quando esegui il programma, un possibile output sarà:

 Valore = 101

Articoli interessanti...