getchar () или putchar () продолжают есть первый символ моего ввода

редактировать: этот вопрос решен. спасибо за все ответы

Это моя программа:

#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.

буква «т» отсутствует.
почему это происходит и как я могу это исправить?

Спасибо за ваше время.

0

Решение

Ты говоришь int c = getchar() который будет извлекать "t",
Тогда, когда вы говорите, while (c = getchar()) это будет восстановить "h"Обратите внимание, что вы даже не получили возможность распечатать персонажа, так как вы позвонили getchar в while заявление.

Чтобы это исправить, объявите int c = 0; или же int c;

Затем, когда вы звоните getchar() в while Цикл вы начнете с первого символа.

2

Другие решения

В соответствии

int c = getchar()

Вы получаете значение «т». Однако, когда вы звоните

while((c= getchar()) != EOF)

getchar вызывается снова и ‘h’ читается. ты тогда
путчар впервые после этого. Итак, в заключение:
Вы дважды вызываете getchar перед вызовом putchar. решение этого
будет звонить

int c = getchar();
putchar(c);

на вершине

0

По вопросам рекламы [email protected]