Нельзя использовать функцию 2 getchar() в простом фрагменте кода C

Я вроде новичок в программировании и особенно на языке C. Я пытаюсь немного кода, чтобы узнать больше о синтаксисе Си. Вот мой вопрос: почему второй getchar() в приведенном ниже фрагмент кода не работает? Я имею в виду, что хочу утешить, подожди, пока я войду, а потом закончу

#include<stdio.h>
#include<curses.h>

int main() {
    char ch = getchar(); 
    getchar();

    return 0;
}

PS: я использую Ubuntu 17.10.

1 ответ

Решение

Как уже упоминалось в комментариях, вы печатаете два символа. Письмо a и символ новой строки (\n). покажи второй getchar () \n,

Если вы хотите использовать второй getchar (), то перед его использованием используйте fflush(stdin), fflush (stdin) обычно удаляет (сбрасывает) этот тип дополнительного символа (в вашем случае \n). или вы можете сделать как ниже

#include<stdio.h>
#include<curses.h>

int main() {
    char ch;
    printf("Enter a charcter: ");
    ch = getchar(); 
    printf("\nyou typed the character ");
    putchar(ch);
    while ((getchar()) != '\n');     //fflush(stdin);   /* use this*/
    getchar();

    return 0;
}

Здесь "while ((getchar())!= '\ N');" читает символы буфера до конца и отбрасывает их (включая символ новой строки) и использует их после оператора "scanf ()", очищающего входной буфер и позволяющего ввод в нужный контейнер.

А также смотрите следующие ссылки.

  1. Замена флеша (стандартный)
  2. Альтернатива библиотечной функции C fflush (stdin)
  3. Использование fflush (stdin)
  4. Очистка входного буфера в C/C++
Другие вопросы по тегам