Дублирующийся вывод сообщения в цикле - C (СИ)
Формулировка задачи:
Привет. Около полугода регулярно нахожу для себя ответы на этом форуме - за что всем спасибо. Но сейчас возник вопрос, на который ответа не нашел. В связи с чем - зарегистрировался.
Возможно вопрос глупый.
Суть проблемы:
есть бесконечный цикл, в нем оператор else который либо разрывает цикл, либо пишет об ошибке. По какой то причине в случаевторого
варианта сообщение выводится дважды - почему? как исправить? Заранее спасибо за ваши буквы.#include <stdio.h>
#include<locale.h>
int menu(void)
{
printf("1\n2\n3\n4\n");
char c;
do
{
scanf ("%c",&c);
if (
c=='1'||
c=='2'||
c=='3'||
c=='4'
) break;
else printf ("Неправильный выбор\n");
} while (1);
return (0);
}
int main (void)
{
setlocale (LC_ALL, "");
do
{
menu();
char t=0;
scanf("%c",&t);
if(t=='4') break;
} while(1);
}Решение задачи: «Дублирующийся вывод сообщения в цикле»
textual
Листинг программы
scanf ("\n%c",&c);
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Происходит считывание символа с помощью функции scanf()
- Считанный символ сохраняется в переменной типа char с именем
cТаким образом, данный код позволяет пользователю ввести один символ, который затем сохраняется в переменнойc.