Сравнение char в цикле while - PullRequest
1 голос
/ 28 ноября 2011

Пока вход не равен x, цикл будет продолжать запрашивать ввод и выводит либо A, либо B.

int main (void){

    char input;

    while( input != 'x'){

        printf("Enter Input:");

        scanf("%c", &input);

        if (input == 'a'){

            printf("A \n");
        }

        else{

            printf("B\n");
        }

   }

    return (0);
}

Проблема заключается в том, что каждый раз после того, как я вводил ввод, он печатает вывод, а также выводит «Enter Input: B» в новой строке, независимо от того, вводил ли я a или b или что-либо еще в качестве ввода. Может кто-нибудь сказать мне, как я могу решить эту проблему, спасибо!

Вот что случилось:

Введите ввод: a

A

Ввод ввода: B / после вывода всегда печатается эта строка, как я могу избавиться от этого ?? /

Ввод данных: a

A

Ввод ввода: B

Введите ввод: b

B

Ввод ввода: B

Введите ввод: b

Ответы [ 3 ]

4 голосов
/ 28 ноября 2011

Чтобы игнорировать символы новой строки, scanf должно быть:

scanf(" %c", &input);
       ^

Также вы, вероятно, захотите сбросить stdout сразу после этого printf:

printf("Enter Input:");
fflush(stdout);
1 голос
/ 28 ноября 2011

Вам нужно съесть newline символ:

scanf("%c", &input);
  while((ch=getchar())!='\n');
0 голосов
/ 28 ноября 2011

Ошибка в том, что символ ввода строки читается с ввода.

Вы также можете сослаться на это: Почему getchar () не ждет, пока я нажму enter после scanf ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...