@Arsen00

Как считывать со scanf несколько раз?

Я делаю программу, в которой осуществляется перевод с Десятеричной системы в Восьмеричную систему счисления и наоборот.
После первого ввода числа в scanf для выбора в меню нет возможности при следующем проходе в цикле изменить свой выбор. Программа просто переходит в бесконечный цикл при вводе например четвёрки
Мне нужно чтобы при каждом проходе цикла программа запрашивала выбор в переменную auswahl.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h> 


main()
{

	char auswahl;

	do
	{
	//	Auswahlmenü:
		printf("**************** Menue ******************\n"
			"*					*\n"
			"*1)	Konvertierung Dezimal zu Oktal	*\n"
			"*2)	Konvertierung Oktal zu Dezimal	*\n"
			"*3)		Abbruch			*\n"
			"*					*\n"
			"**************** ****** *****************\n\n");

		// Wert einlesen:
		int gelesenerWert = scanf("%1c", &auswahl); // ПРОБЛЕМА ЗДЕСЬ

		// Überprüfung:
		if (gelesenerWert == 1)
		{

			// Ungültige Eingaben:
			if (auswahl != '1' && auswahl != '2' && auswahl != '3')
			{
				printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
			}

			// Fall 1: Dezimal zu Oktal
			if (auswahl == '1')
			{

			}

			// Fall 2: Oktal zu Dezimal
			else if (auswahl == '2')
			{

			}

			// Fall 3: Abbruch
				continue;


			
		}
		else
		{
			printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
		}
	} while (auswahl != '3');

}
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
AlexDyuba
@AlexDyuba
попробуй этот код: перед scanf, функцию rewind(stdin);
#define _CRT_SECURE_NO_WARNINGS
#include
#include

main()
{

char auswahl;

do
{
// Auswahlmenü:
printf("**************** Menue ******************\n"
"* *\n"
"*1) Konvertierung Dezimal zu Oktal *\n"
"*2) Konvertierung Oktal zu Dezimal *\n"
"*3) Abbruch *\n"
"* *\n"
"**************** ****** *****************\n\n");
rewind(stdin);
// Wert einlesen:
int gelesenerWert = scanf("%1c", &auswahl); // ПРОБЛЕМА ЗДЕСЬ

// Überprüfung:
if (gelesenerWert == 1)
{

// Ungültige Eingaben:
if (auswahl != '1' && auswahl != '2' && auswahl != '3')
{
printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
}

// Fall 1: Dezimal zu Oktal
if (auswahl == '1')
{

}

// Fall 2: Oktal zu Dezimal
else if (auswahl == '2')
{

}

// Fall 3: Abbruch
continue;

}
else
{
printf("Ungueltige Eingabe. Bitte erneut versuchen.\n");
}
} while (auswahl != '3');

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы