2012-05-10 3 views
0

Я получаю тот же результат строки для curTime и pastTime, когда я использую «ctime», хотя фактические значения в curTime и pastTime различаются на 600 секунд.ctime (x) = ctime (x-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); 

ответ

4

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

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

+1

... или использовать 'strftime', для чего вам необходимо управлять буфером. –

+0

В конце концов я использовал sprintf для каждого. Но strftime выглядит проще, используя только то, что я хочу отображать. спасибо – jdl