Да, вы в основном получили это.Но это еще проще: getchar
и putchar
уже возвращают и принимают типы int
соответственно.Так что никакого продвижения типа не происходит.Вы просто вводите символы и отправляете их в цикле, пока не увидите EOF
.
Ваша интуиция о том, почему это должна быть int
, а не какая-то форма char
, вероятно правильна:Тип 1009 * допускает значение дозорного EOF
, которое находится вне диапазона значений любого возможного символьного значения.
(Функции K & R stdio
на данный момент очень устарели, они не знают о Юникоде и т. Д., И некоторые из основополагающих обоснований дизайна, если не мутные, то просторелевантный. В наши дни не так много практического кода будет использовать эти функции. Эта книга отлично подходит для многих вещей, но примеры кода довольно архаичны.)
(Кроме того, fwiw, название вашего вопроса относится к "копирование файла ", который вы все еще можете сделать таким образом, но есть более канонические способы)