C ++ ungetc () - C ++ Standardbibliothek

Die Funktion ungetc () in C ++ schiebt das zuvor gelesene Zeichen zurück in den Stream, damit es erneut gelesen werden kann.

Die Funktion ungetc () ist in der Header-Datei definiert.

ungetc () Prototyp

 int ungetc (int ch, FILE * stream);

Die Funktion ungetc () schiebt das Zeichen ch zurück in den Puffer, der dem Dateistream zugeordnet ist, es sei denn, ch ist gleich EOF. Wenn ch gleich EOF ist, schlägt die Operation fehl und es gibt keine Änderung im Stream.

Aufrufe von ungetc () können fehlschlagen, wenn es mehr als einmal ohne Lese- oder Neupositionierungsvorgang in der Mitte aufgerufen wird.

Wenn ein Aufruf von ungetc () erfolgreich ist, wird das Flag für das Ende des Dateistatus gelöscht.

Bei binären Streams wird durch einen erfolgreichen Aufruf von ungetc die Stream-Positionsanzeige um eins verringert. Wenn der Stream-Positionsindikator Null ist, ist das Verhalten unbestimmt.

Bei einem Textstrom ändert ein erfolgreicher Aufruf von ungetc die Stream-Positionsanzeige auf nicht spezifizierte Weise. Es ist jedoch garantiert, dass nach dem Abrufen aller zurückgeschobenen Zeichen mit einer Leseoperation die Stream-Positionsanzeige ihrem Wert entspricht, bevor ungetc () aufgerufen wird.

ungetc () Parameter

  • ch: Der zurückzuschiebende Charakter.
  • stream: Dateistream, in dem das Zeichen zurückgeschoben wird.

ungetc () Rückgabewert

  • Bei Erfolg gibt die Funktion ungetc () das Zeichen ch zurück.
  • Bei einem Fehler wird EOF zurückgegeben, ohne den Stream zu ändern.

Beispiel: Wie funktioniert die Funktion 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; )

Wenn Sie das Programm ausführen, ist eine mögliche Ausgabe:

 Wert = 101

Interessante Beiträge...