C ++ ungetc () - C ++ стандартна библиотека

Функцията 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

Интересни статии...