C ++ ungetc () - C ++ standardna biblioteka

Funkcija ungetc () u C ++-u gura prethodno pročitani znak natrag u tok kako bi ga se moglo ponovno pročitati.

Funkcija ungetc () definirana je u zaglavnoj datoteci.

ungetc () prototip

 int ungetc (int ch, FILE * stream);

Funkcija ungetc () gura znak ch natrag u međuspremnik povezan s protokom datoteke, osim ako je ch jednak EOF. Ako je ch jednak EOF, operacija ne uspije i nema promjena u toku.

Pozivi ungetc () mogu propasti ako su pozvani više puta bez ikakve operacije čitanja ili premještanja u sredini.

Ako je poziv na ungetc () uspješan, izbrisat će se zastavica statusa datoteke.

Za binarne tokove, uspješan poziv na ungetc smanjuje pokazatelj položaja toka za jedan. Ako je pokazatelj položaja struje nula, ponašanje je neodređeno.

Za tekstualni tok, uspješan poziv ungetca modificira indikator položaja strujanja na neodređeni način. No, zajamčeno je da nakon što se svi potisnuti znakovi dohvaćaju operacijom čitanja, indikator položaja streama jednak je svojoj vrijednosti prije pozivanja ungetc ().

ungetc () Parametri

  • ch: Lik koji treba odgurnuti.
  • stream: tok datoteke gdje se lik gura natrag.

ungetc () Povratna vrijednost

  • Nakon uspjeha funkcija ungetc () vraća znak ch.
  • U slučaju kvara, EOF se vraća bez promjene streama.

Primjer: Kako funkcionira funkcija 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; )

Kada pokrenete program, mogući izlaz bit će:

 Vrijednost = 101

Zanimljivi članci...