C ++ ungetc () - Biblioteka standardowa C ++

Funkcja ungetc () w C ++ wypycha poprzednio odczytany znak z powrotem do strumienia, aby można go było ponownie odczytać.

Funkcja ungetc () jest zdefiniowana w pliku nagłówkowym.

ungetc () prototyp

 int ungetc (int ch, PLIK * strumień);

Funkcja ungetc () odkłada znak ch z powrotem do bufora związanego ze strumieniem pliku, chyba że ch jest równe EOF. Jeśli ch jest równe EOF, operacja kończy się niepowodzeniem i nie ma żadnych zmian w strumieniu.

Wywołania ungetc () mogą się nie powieść, jeśli zostanie wywołane więcej niż raz bez żadnej operacji odczytu lub zmiany położenia w środku.

Jeśli wywołanie ungetc () powiedzie się, feof flagi statusu końca pliku zostaje wyczyszczone.

W przypadku strumieni binarnych pomyślne wywołanie ungetc zmniejsza wskaźnik pozycji strumienia o jeden. Jeśli wskaźnik pozycji strumienia ma wartość zero, zachowanie jest nieokreślone.

W przypadku strumienia tekstowego pomyślne wywołanie ungetc modyfikuje wskaźnik pozycji strumienia w nieokreślony sposób. Ale jest zagwarantowane, że po pobraniu wszystkich wypchniętych znaków za pomocą operacji odczytu, wskaźnik pozycji strumienia jest równy swojej wartości przed wywołaniem funkcji ungetc ().

ungetc () Parametry

  • ch: znak do cofnięcia.
  • stream: strumień plików, w którym znak jest cofany.

ungetc () Wartość zwracana

  • Po pomyślnym zakończeniu funkcja ungetc () zwraca znak ch.
  • W przypadku błędu EOF jest zwracany bez zmiany strumienia.

Przykład: Jak działa funkcja 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; )

Po uruchomieniu programu możliwe wyjście to:

 Wartość = 101

Interesujące artykuły...