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

Функция ungetc () в C ++ отправляет ранее прочитанный символ обратно в поток, чтобы его можно было прочитать снова.

Функция ungetc () определена в заголовочном файле.

ungetc () прототип

 int ungetc (int ch, ФАЙЛ * поток);

Функция ungetc () помещает символ ch обратно в буфер, связанный с файловым потоком, если ch не равен EOF. Если ch равно EOF, операция завершается ошибкой, и поток не изменяется.

Вызов ungetc () может завершиться ошибкой, если он вызывается более одного раза без какой-либо операции чтения или изменения положения в середине.

Если вызов ungetc () успешен, флаг состояния конца файла feof сбрасывается.

Для двоичных потоков успешный вызов ungetc уменьшает индикатор положения потока на единицу. Если индикатор положения потока равен нулю, поведение неопределенное.

Для текстового потока успешный вызов ungetc изменяет индикатор положения потока неопределенным образом. Но гарантируется, что после того, как все возвращенные символы извлечены с помощью операции чтения, индикатор позиции потока будет равен своему значению перед вызовом ungetc ().

Параметры ungetc ()

  • ch: персонаж, который нужно оттолкнуть.
  • stream: файловый поток, в котором персонаж перемещается назад.

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

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