int ungetc(int ch, FILE *stream)
Функция ungetc() возвращает символ, заданный младшим байтом аргумента ch, обратно во входной поток stream. При очередной операции чтения из stream этот символ считывается снова. Обращение к функциям fflush() или fseek() прекращает действие функции ungetc() и отбрасывает возвращаемый символ.
Между двумя последовательными операциями чтения может быть возвращен обратно только один символ.
Возвратить описанным образом EOF невозможно.
Вызов ungetc() сбрасывает флаг конца файла, связанного с указанным потоком. Значение указателя положения в файле для текстового потока является неопределенным до тех пор, пока все возвращенные символы не будут считаны, после чего указателю возвращается то значение, которое он имел до первого вызова ungetc(). В случае двоичного потока при каждом вызове ungetc() значение указателя положения в файле уменьшается на единицу.
Возвращаемое значение равно ch в случае успеха и EOF при неудаче.
Следующая функция считывает слова из входного потока, на который указывает fp. Последний символ возвращается в поток для последующего использования. Например, для входного потока count/10 функция read_word() при первом обращении вернет слово count, а символ / будет направлен обратно во входной поток. void read_word(FILE *fp, char *token) { while (isalpha (*token=getc(fp))) token++; ungetc(fp, *token); }
