редактировать: этот вопрос решен. спасибо за все ответы
Это моя программа:
#include <stdio.h>
int main(){
printf("write something : \n");
int c = getchar();
while((c = getchar()) != EOF){
if (c == ' ' || c == '\t')
printf(" \n");
else
putchar(c)
}
return 0;
}
каждый раз, когда я запускаю его, он работает нормально, но ест первый символ моего ввода
например, когда я запускаю программу, результат выглядит так:
write something :
this is a sentence.
his
is
a
sentence.
буква «т» отсутствует.
почему это происходит и как я могу это исправить?
Спасибо за ваше время.
Ты говоришь int c = getchar()
который будет извлекать "t"
,
Тогда, когда вы говорите, while (c = getchar())
это будет восстановить "h"
Обратите внимание, что вы даже не получили возможность распечатать персонажа, так как вы позвонили getchar
в while
заявление.
Чтобы это исправить, объявите int c = 0;
или же int c;
Затем, когда вы звоните getchar()
в while
Цикл вы начнете с первого символа.
В соответствии
int c = getchar()
Вы получаете значение «т». Однако, когда вы звоните
while((c= getchar()) != EOF)
getchar вызывается снова и ‘h’ читается. ты тогда
путчар впервые после этого. Итак, в заключение:
Вы дважды вызываете getchar перед вызовом putchar. решение этого
будет звонить
int c = getchar();
putchar(c);
на вершине