Member 13053924 Ответов: 2

Getchar() в программировании на языке Си


#include< stdio.h>
тап_п()
{
char ch;
printf ("\nEnter символ\n");
ch=getchar();
в то время как(ch!= '1')
{
putchar(ч);
ch=getchar();
}
возвращает 0;
}

Что я уже пробовал:

1.Во-первых ,хотя я ввел 1 в качестве входных данных,в соответствии с циклом while он должен завершить программу,но это не так.
2. как только я ввел enter,я хочу,чтобы моя программа перешла на новую строку и позволила мне ввести ввод ,но как только я наберу enter, она просто вставит ввод того, что я дал.

Пример:
Ввод:
Сандип 67865

1
Выход должен быть:
Сандип 67865

2 Ответов

Рейтинг:
2

OriginalGriff

Это потому, что getchar не возвращается, как только пользователь нажимает клавишу: он считывает символ из стандартного входного потока, и эти данные доступны только тогда, когда пользователь нажимает ENTER, чтобы показать, что он доволен тем, что набрал. Если бы это было не так, то он не смог бы вернуться назад, чтобы изменить то, что он набрал.

Итак, происходит то, что первый вызов getchar не возвращается до тех пор, пока пользователь не закончит строку, и в этот момент он "повторяет" (или "вставляет" в ваших терминах) все символы вплоть до ENTER.

Измените цикл, и вы поймете, что я имею в виду:

while(ch!='1')
    {
    printf("\nThe character was: ");
    putchar(ch);
    ch=getchar();
    }


Рейтинг:
2

RAMASWAMY EKAMBARAM

попробуйте getch (). Он не ждет < enter>и не отвечает эхом на консоль.