Функция проверки ввода, принимающая разные типы данных - C (СИ)
Формулировка задачи:
Мне нужно написать функцию для проверки ввода, но так чтобы она могла делать свою работу, получая разные типы данных(char, int, float etc...). Я еще недостаточно понимаю ADT чтоб сделать самому, но по идее я хочу внутри этой функции запускать еще atoi, isalpha и isdigit. Никак не могу сообразить как функция должна узнавать какой тип данных ей передали.
Решение задачи: «Функция проверки ввода, принимающая разные типы данных»
textual
Листинг программы
#define InputCheck(arg, type) type##InputCheck(arg)
void intInputCheck(int a)
{
...
}
void floatInputCheck(float a)
{
...
}
...
int main()
{
float f = 0.5;
InputCheck(3, int);
InputCheck(f, float);
}
Объяснение кода листинга программы
- В данном коде определена макро-функция
InputCheck, которая принимает два аргумента:argиtype. typeпредставляет собой строку, которая определяет тип данных, который должен быть проверен.- Макро-функция
InputCheckзатем вызывает функцию проверки ввода, соответствующую типу данных. - В функции
mainопределены две переменные:intиfloat, которые будут использоваться для проверки ввода. - Затем вызывается функция
InputCheckс аргументами3иint, что вызывает функциюintInputCheckдля проверки ввода целого числа. - Затем вызывается функция
InputCheckс аргументамиfиfloat, что вызывает функциюfloatInputCheckдля проверки ввода числа с плавающей точкой. - Код не содержит обработку ошибок или возвращаемых значений от функций проверки ввода.
- Данный код предполагает, что функции
intInputCheckиfloatInputCheckвыполняют какую-то проверку ввода, но без их реализации невозможно точно сказать, что именно они делают.