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

Цікаві статті...