Почему мы используем getchar() в цикле while для получения значений, а функция getch или getche не может быть использована?

#c

#c

Вопрос:

Почему мы используем функцию getchar() в цикле while для получения значений в режиме записи, почему функции getch или getche нельзя использовать?

 #include<stdio.h>
#include<conio.h>
main()
{
    clrscr();
    FILE *f;
    char r;
    f=fopen("muster_up.txt","w");
    while((r=getchar())!=EOF)
    {
        fputc(r,f);
    }
    fclose(f);
    f=fopen("muster_up.txt","r");
    while((r=fgetc(f))!=EOF)
    {
        printf("%c",r);
    }
    fclose(f);
    getch();
}
  

Ответ №1:

getchar — это стандартная функция c в stdio.h, getch, getche — это нестандартные функции, используемые в старых системах Windows / MS-DOS, они есть в conio.h

getch и getche не ждут, пока пользователь нажмет enter, просто сразу считывают символ. getch также не повторяет символ, но getche делает.

Вот как это работает: вызывается getchar, входной буфер stdio пуст, поэтому он ожидает ввода пользователем. Пользователь вводит строку символов (предложение), нажимает enter, эти символы сохраняются во входном буфере, затем getchar получает первый символ из этого. Поскольку мы вызвали ее в цикле, она будет считывать все символы из входного буфера, пока он не опустеет, затем подождите.

Попробуйте использовать getch: программа завершит работу, если вы не введете символ немедленно. Также getchar предлагает пользователю больше гибкости при вводе.

getchar и вышеуказанные функции получают ввод с клавиатуры.