У меня есть этот код:
char c; do { scanf("%c",&c); printf("coucou\n"); } while (c!='q');
И вот мой результат:
Вход:
M
Выход:
coucou coucou
Почему он печатает "coucou" 2 раза каждый раз?
Цикл выполняется 2 раза, потому что scanf сканирует 2 символа, один для M, а другой для \n символа новой строки.
scanf
\n
Вы можете легко решить эту проблему, добавив условие к вашему цикл:
do { if(getchar() != '\n') printf("coucou\n"); } while (c!='q');