В рамках вопроса уже есть несколько правильных ответов, но есть пара более широких проблем, которые вам нужно решить.
Во-первых, getchar()
возвращает int
, и важно, чтобы выопределите переменную, которая принимает возвращаемое значение как int
, чтобы вы могли отличить ошибки и конец файла от действительных char
s.
Во-вторых, если вы получили конец файла или произошла ошибка на stdin
до того, как программа обнаружит \n
, ваш код будет зацикливаться вечно.Это то, что страница руководства на моем ноутбуке говорит о getchar()
В случае успеха эти процедуры возвращают следующий запрошенный объект из потока.Символьные значения возвращаются как беззнаковый символ, преобразованный в int.Если поток находится в конце файла или возникает ошибка чтения, подпрограммы возвращают EOF.
Так что, как только getchar () возвращает EOF
, он будет возвращать EOF
все время.Вы должны решить эту проблему в своем цикле:
#include <stdio.h>
int main()
{
int c; // c declared as int
while ((c = getchar()) != EOF && c != '\n'))
{
putchar(c);
}
if (c == EOF)
{
// handle errors and end of file as you see fit
}
}