ctime(x) = ctime(x-600) почему?

Я получаю один и тот же строковый результат для curTime и pastTime, когда использую «ctime», хотя фактические значения в curTime и pastTime отличаются на 600 секунд.

Как я могу получить одинаковое время строки для обоих при использовании ctime?

Спасибо

struct _timeb timebuffer;

_ftime(&timebuffer);

const time_t  curTime = (const time_t)timebuffer.time;
const time_t  pastTime = curTime - (const time_t)600;

s.Format("%d  %s\n%d  %s", curTime, ctime(&curTime), pastTime, ctime(&pastTime) );
MessageBox(s);

person jdl    schedule 10.05.2012    source источник


Ответы (1)


ctime возвращает строку, которая может быть размещена статически.

Таким образом, один из ваших двух вызовов перезаписывает строку, которую генерирует другой. Вам нужно будет разделить это на два оператора печати или скопировать (копировать строку) возвращаемые значения ctime во временные.

person Mat    schedule 10.05.2012
comment
...или используйте strftime, что требует от вас управления буфером. - person Roger Lipscombe; 10.05.2012
comment
В итоге я использовал sprintf для каждого. Но strftime выглядит проще в использовании, если использовать только то, что я хочу отобразить. Спасибо - person jdl; 10.05.2012