printf(" -----------------------------------\n");
printf("| *** E - Liquid Calculator *** |\n");
printf(" -----------------------------------\n");
printf("| Zutaten |\n");
printf(" -----------------------------------\n");
printf("| Aroma: %% Nikotin: mg/ml |\n");
printf("| Nikotinshot: mg/ml |\n");
printf("| In total: ml |\n");
printf(" -----------------------------------\n");
printf("| Ergebnis |\n");
printf(" -----------------------------------\n");
printf("| Aroma: ml Nikotin: ml |\n");
printf("| Base: ml |\n");
printf(" -----------------------------------\n");
Я создал небольшой проект, в котором я хочу, чтобы пользователь ввел 4 значения в таблицу, а затем вычислил ингредиенты. однако, если пользователь нажимает «ввод» до фактического ввода значения, курсор просто перейдет на новую строку, а затем уничтожит макет всей программы.
я попробовал следующий код, чтобы предотвратить любые неожиданные «новые строки / ввод»
do
{
POSITION (6,10);
scanf("%c", &spacebar);
if (spacebar == '\n')
{
POSITION (18,0);
printf("Eingabe erfordelich!\n");
}
} while (spacebar == '\n');
clearBuffer();
проблема в том, что, как только я действительно ввожу значение, программа пропускает введенное значение и Мне нужно ввести его во второй раз, прежде чем он будет сохранен в переменной.
так выглядит в целом функция «предотвращать новую строку» и первая функция, которая читает пользовательский ввод для «аромат»
do //prevent the user from pressing enter before actually typing a number
{
POSITION (6,10);
scanf("%c", &spacebar);
if (spacebar == '\n')
{
POSITION (18,0);
printf("Eingabe erfordelich!\n");
}
} while (spacebar == '\n');
clearBuffer();
POSITION (18,0);
CLEAR_LINE;
do
{
POSITION (6,10);
Scan_Erg = scanf("%f", &Aroma);
clearBuffer();
if (Scan_Erg == 0)
{
POSITION (16,0);
FORECOLOR_RED;
printf("Please only enter numbers!");
FORECOLOR_YELLOW;
POSITION (6,14);
CLEAR_LINE;
POSITION (6,10);
printf(" %% Nikotin: mg/ml |");
}
else
{
POSITION (6,10);
CLEAR_LINE;
POSITION (6,10);
printf("%4.1f%% Nikotin: mg/ml |", Aroma);
}
} while (Scan_Erg == 0);
Кто-нибудь знает, как заблокировать ввод как новую строку, когда нет вводимого значения? любые предложения или помощь будут оценены. я новичок в программировании: -)