Как защитить программу от сбоя при вводе - C (СИ)
Формулировка задачи:
Всем привет.
Подскажите, пожалуйста, возможно ли это реализовать и как.
Пользователь вводит некоторые данные. Допустим в 5 переменных. Некоторые вводят переменные в строку через пробел, а затем только нажимают enter.
Как защитить программу от сбоя при вводе, например 6 переменных? Да, знаю, что если будут введены цифры, то это будет проигнорировано, а что если буквы?
Пример:
Входные данные: 100 300 400 Slovo 45453 sboi
Как избежать сбой после ввода шестой переменной и реально ли вообще?
Всем заранее спасибо
scanf("%d%d%d%s%d", &kodm, &kodp, &kods, name, &kol);
Решение задачи: «Как защитить программу от сбоя при вводе»
textual
Листинг программы
#include <stdio.h> int main() { char string[256]; int digit; printf("inptut string and digit:\n"); while (scanf("%s%d", string, &digit) != 2) { fflush(stdin); fprintf(stderr, "Error input... Repeat...\n"); } fflush(stdin); printf("string: %s\ndigit: %d\n", string, digit); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные: строковая переменная
string
типаchar
размером в 256 символов и целочисленная переменнаяdigit
типаint
. - Выводится сообщение с просьбой ввести строку и целое число.
- Запускается цикл while, который будет выполняться до тех пор, пока функция scanf не считает корректно строку и целое число (то есть не вернет значение 2).
- Внутри цикла, если ввод был неверным (то есть scanf вернул значение меньше 2), то буфер ввода (stdin) очищается с помощью функции fflush, а в журнал ошибок (stderr) выводится сообщение об ошибке.
- Если ввод был корректным, то цикл прерывается и значения переменных выводятся на экран.
- В конце программы возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д