Насколько я понимаю, вам нужны внутренние часы, которые обновляются в соответствии с ходом реальных часов.
Итак, вы бы создали что-то вроде этого:
struct myTime
{
time_t userStart;
time_t systemStart;
time_t curTime;
};
void initTtime(struct myTime *t, time_t time)
{
t->userStart=time;
t->systemStart=time(NULL);
}
time_t getTime(struct myTime *t)
{
t->curTime = t->userStart + time(NULL)-t->systemStart;
return t->curTime;
}
, поэтому с помощью initTime вы устанавливаете текущее время, которое вы хотите иметь, это связано с системным временем в данный момент времени. Когда вы вызываете getTime с использованием этой структуры, она обновляет начальную точку в зависимости от времени выполнения. (Обратите внимание, я не тестировал код, и вы можете использовать структуру напрямую, если хотите).
Для точности с точностью до секунды замените time () и time_t эквивалентом gettimeofday. А для конвертации, ascii arting, разбивки на что-либо, кроме второго счетчика, вы все равно можете использовать функцию unix.