Проверка правильности ввода - C (СИ)
Формулировка задачи:
Нужно ввести с клавиатуры название страны и ее населения, как сделать проверку правильности ввода, чтобы в поле страна не могли бы вводиться числовые данные а в поле площадь Не могли бы вводиться текстовые данные?
Решение задачи: «Проверка правильности ввода»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#define BUFSIZE 55
int check_country_name(const char*);
int check_area(const char*);
int is_char(char);
int
main(void)
{
char buf[BUFSIZE];
printf("Input country: ");
gets_s(buf, BUFSIZE);
if(!check_country_name(buf)) {
printf("Error!\n");
return -1;
}
printf("Input area: ");
scanf("%55s", buf);
if(!check_area(buf)) {
printf("Error!\n");
return -2;
}
printf("Passed!\n");
return 0;
}
int
check_country_name(const char *str)
{
for(const char *it = str; *it; ++it) {
if(!is_char(*it)) {
return 0;
}
}
return 1;
}
int
check_area(const char *str)
{
for(const char *it = str; *it; ++it) {
if(!isdigit(*it) && *it != '.' && *it != ',') {
return 0;
}
}
return 1;
}
int
is_char(char ch)
{
return ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == ' ' || ch == '-');
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются функции, которые будут использоваться в программе
- Объявляются и инициализируются переменные, используемые в программе
- Выводится приглашение для ввода названия страны
- Вводится название страны с использованием функции gets_s
- Проверяется корректность введенного названия страны с помощью функции check_country_name
- Если название страны некорректно, выводится сообщение об ошибке и программа завершается с кодом -1
- Выводится приглашение для ввода площади страны
- Вводится площадь страны с использованием функции scanf
- Проверяется корректность введенной площади страны с помощью функции check_area
- Если площадь страны некорректна, выводится сообщение об ошибке и программа завершается с кодом -2
- Выводится сообщение о прохождении проверки
- Программа завершается с кодом 0