Я решаю CS50 (проблема 1) i.e water.c. Он просит пользователя написать программу, которая запрашивает у пользователя длину его или ее душа в минутах (как положительное целое число), а затем печатает эквивалентное количество бутылок воды (в виде целого числа). 1 мин. Ливня = 12 бутылок потребляется ОСНОВНАЯ ПРОБЛЕМА: Проблема в том, что мы должны гарантировать, что пользователь вводит положительное количество минут, в противном случае он будет снова запрашивать его обратно в инструкции ввода/сканирования. Пока он входит, он вводит длину < = 0, я могу повторно пригласить его обратно, используя while (длина < = 0), но когда он вводит символ i.e abc123 во вход, мой код продолжает выполняться. Любые решения?Повторный запрос пользователя до тех пор, пока он/она не введет положительное целое значение больше 1
>
#include <stdio.h>
int main()
{ int length=0;
int min=12;
int bottle=0;
printf("Enter length of his or her shower in minutes");
scanf("%d", &length);
while (length <= 0){
printf("Enter length of his or her shower in minutes");
scanf("%d", &length);
}
bottle= (min*length);
printf("%d", bottle);
return 0;
}
Покажите нам, что вы делали до сих пор, не только просим нас написать код для вас –
отредактированных, теперь вы можете видеть мой код :) –
посмотри на 'strtol' , Вы можете прочитать ввод как строку, используйте 'strtol', чтобы преобразовать строку в целое число, и если во время преобразования есть какая-либо ошибка,' strtol' укажет ее, установив errno: https://linux.die.net/man/3/strtol – yano