Дублирующийся вывод сообщения в цикле - 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);

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. Происходит считывание символа с помощью функции scanf()
  2. Считанный символ сохраняется в переменной типа char с именем c Таким образом, данный код позволяет пользователю ввести один символ, который затем сохраняется в переменной c.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы