putc
записывает что-то для вывода, поэтому оно появляется на экране или в файле, в который вы перенаправили вывод.
ungetc
помещает что-то обратно на вход буфер, так что в следующий раз, когда вы позвоните getc
(или fgetc
и т. д.), это то, что вы получите.
Обычно вы используете putc
для записи вывода.Обычно вы используете ungetc
, когда читаете ввод, и единственный способ узнать, что вы достигли конца чего-либо, - это когда вы читаете символ, который не может быть частью текущего «чего-то».Например, вы читаете и конвертируете целое число, продолжаете до тех пор, пока не прочитаете что-то отличное от цифры, а затем ungetc
этот нецифровый символ, который будет обработан как следующее что-то, поступающее из потока.