Нельзя использовать функцию 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 ()", очищающего входной буфер и позволяющего ввод в нужный контейнер.
А также смотрите следующие ссылки.