C ++ ungetc () - Standardna knjižnica C ++

Funkcija ungetc () v jeziku C ++ potisne prej prebrani znak nazaj v tok, da ga je mogoče znova prebrati.

Funkcija ungetc () je definirana v datoteki glave.

prototip ungetc ()

 int ungetc (int ch, FILE * tok);

Funkcija ungetc () potisne znak ch nazaj v medpomnilnik, povezan z datotečnim tokom, razen če je ch enak EOF. Če je ch enak EOF, operacija ne uspe in v toku ni sprememb.

Klici ungetc () lahko propadejo, če so poklicani večkrat brez kakršnega koli branja ali premeščanja na sredini.

Če je klic ungetc () uspešen, se oznaka zastavice konca datoteke počisti.

Pri binarnih tokovih uspešen klic ungetc za eno zmanjša indikator položaja toka. Če je kazalnik položaja toka nič, vedenje ni določeno.

Za besedilni tok uspešen klic ungetc spremeni indikator položaja toka na neopredeljen način. Zagotovljeno pa je, da je po tem, ko so vsi potisnjeni znaki pridobljeni z branjem, indikator položaja toka enak svoji vrednosti pred klicem ungetc ().

ungetc () Parametri

  • ch: Znak, ki ga je treba potisniti nazaj.
  • tok: tok datoteke, kjer je znak potisnjen nazaj.

ungetc () Vrnjena vrednost

  • Po uspehu funkcija ungetc () vrne znak ch.
  • Ob okvari se EOF vrne brez spreminjanja toka.

Primer: Kako deluje 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; )

Ko zaženete program, bo možen izhod:

 Vrednost = 101

Zanimive Članki...