Функцията ungetc () в C ++ изтласква предварително прочетения символ обратно в потока, за да може той да бъде прочетен отново.
Функцията ungetc () е дефинирана в заглавния файл.
ungetc () прототип
int ungetc (int ch, FILE * поток);
Функцията ungetc () изтласква символа ch обратно към буфера, свързан с файловия поток, освен ако ch е равен на EOF. Ако ch е равно на EOF, операцията се проваля и няма промяна в потока.
Повикванията към ungetc () могат да се провалят, ако са извикани повече от веднъж без операция за четене или преместване в средата.
Ако извикването на ungetc () е успешно, краят на флага за състояние на файла се изчиства.
За двоични потоци успешното повикване към ungetc намалява индикатора за позиция на потока с един. Ако индикаторът за позиция на потока е нула, поведението е неопределено.
За текстов поток успешното повикване към ungetc модифицира индикатора за позиция на потока по неуточнен начин. Но е гарантирано, че след като всички изтласкани символи бъдат извлечени с операция за четене, индикаторът за позиция на потока е равен на стойността му преди да извика ungetc ().
ungetc () Параметри
- ch: Героят, който трябва да бъде изтласкан назад.
- поток: Файлов поток, където символът се изтласква назад
ungetc () Върната стойност
- При успех функцията ungetc () връща символа ch.
- При повреда EOF се връща без промяна на потока.
Пример: Как работи функцията 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; )
Когато стартирате програмата, възможният изход ще бъде:
Стойност = 101