#include <stdio.h>
int ungetc(int ch, FILE *stream);
Функция ungetc() возвращает в поток ввода stream символ, заданный младшим байтом параметра ch. Затем этот символ будет получен при последующей операции чтения потока stream. Обращение к таким функциям, как fflush(), fseek() и rewind(), аннулирует действие ungetc() и сбрасывает этот символ.
Гарантируется, что в поток можно возвратить один символ, однако некоторые реализации допускают возврат большего числа символов.
Попытка вернуть в поток ввода значение EOF игнорируется.
Обращение к функции ungetc() очищает признак конца файла, связанный с заданным потоком. Значение указателя текущей позиции файла для текстового потока не определено до тех пор, пока не будут прочитаны все возвращенные обратно в поток символы, в этом случае оно остается таким же, каким было до первого вызова функции ungetc(). При работе с потоками в двоичном режиме каждый вызов функции ungetc() уменьшает указатель текущей позиции файла.
При успешном завершении функция возвращает значение ch, в противном случае — значение EOF.
Пример
Данная функция читает слова из входного потока, адресуемого указателем fp. Разделитель возвращается в поток для последующего использования. Например, если входные данные имеют вид count/10, то при первом обращении к функции read_word() она возвратит count, a символ «/» направит обратно во входной поток.
void read_word(FILE *fp, char *token)
{
while(isalpha(*token=getc(fp))) token++;
ungetc(*token, fp);
}
Зависимые функции
getc()