Нет, это не стандартный формат. Я постараюсь разбить вашу проблему на несколько ключевых частей:
1) Хранение данных:
Поскольку проблема ограничена днями недели, вы можете создать массив пар тм структур для каждого дня недели:
#include <time.h>
typedef tm interval[2];
typedef interval* daysofweek[7];
void main(void)
{
int number_of_intervals = 2; //this must be calculated for each day but to exemplify how you could store your data I initialised it to 2
interval *intervals;
intervals = (interval*)malloc(number_of_intervals);
daysofweek d;
d[0] = intervals; //you must set the intervals for each day
}
2) Разбор
Вы должны определить набор правил, основанный на синтаксисе строк. Из двух приведенных вами примеров я бы определил следующие правила:
- разбить и обработать отдельно все строки на основе символа
;
- разбить получившиеся строки на части с цифрами (плюс
-
, :
и ,
) соответственно на часть с символами
- разобрать деталь с цифрами и создать временные интервалы
- парсинг детали с символами и заполнение массива для каждого дня, отслеживание всех дней, чтобы вы могли инициализировать оставшиеся дни с интервалом 0 секунд
3) Сравнение
После того, как вы заполнили свою структуру данных, вы можете ее проанализировать и вывести, если вы находитесь в интервале или нет, используя функции сравнения, найденные в ctime .
НТН,
JP.
P.S. если бы вы использовали C ++ и STL вместо простого C, задача была бы немного проще.