Элементарная задачка на Си - C (СИ)
Формулировка задачи:
Помогите пожалуйста с элементарной задачкой, не могу сделать именно корректность ввода, тоесть например при вводе буквы вместо числа выводить сообщение об ошибке
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int minut;
int sec;
int obs_sec;
int main(void)
{ setlocale(LC_CTYPE, "Russian");
printf ("Введите количество минут \n");
scanf("%d", &minut)
printf("Введите количество секунд ");
scanf("%d", &sec);
obs_sec = (minut*60)+sec;
printf("Общее количество секунд = %d",obs_sec);
return 0;
}Решение задачи: «Элементарная задачка на Си»
textual
Листинг программы
int ret = 0;
while(!ret)
{
puts("Введите количество минут");
ret = scanf("%d", &minut);
if(!ret)
{
puts("Неверный ввод: введите число");
scanf("%*s");
}
}
Объяснение кода листинга программы
- Объявлена переменная
retтипа int со значением 0. - Запущен цикл while, который будет выполняться до тех пор, пока значение переменной
retне станет ненулевым. - Внутри цикла выводится сообщение
Введите количество минутс помощью функции puts. - Используя функцию scanf, происходит попытка чтения значения в переменную
minut. - Функция scanf возвращает значение 1, если чтение прошло успешно, и 0 в противном случае.
- Если чтение не удалось (значение
retравно 0), то выводится сообщениеНеверный ввод: введите числос помощью функции puts. - Используя функцию scanf с модификатором
%*s, происходит попытка прочитать и игнорировать все символы до конца строки. - Цикл while повторяется до тех пор, пока не будет успешно считано значение в переменную
minut. - По завершении цикла, значение переменной
retравно 1.