Do-while цикл scanf читает циклы два раза вместо одного при чтении одного символа - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть этот код:

char c;
do
{
    scanf("%c",&c);
    printf("coucou\n");
} while (c!='q');

И вот мой результат:

Вход:

M

Выход:

coucou
coucou

Почему он печатает "coucou" 2 раза каждый раз?

1 Ответ

1 голос
/ 01 февраля 2020

Цикл выполняется 2 раза, потому что scanf сканирует 2 символа, один для M, а другой для \n символа новой строки.

Вы можете легко решить эту проблему, добавив условие к вашему цикл:

do
{
  if(getchar() != '\n')  
    printf("coucou\n");
} while (c!='q'); 
...