привет, дружыщща. имеется следующее: Код (Text): time_t firsttime, nexttime; firsttime = time((time_t *) NULL); for ( условия ) { //... //здесь что-то делаем //и здесь тоже //... nexttime = time((time_t *) NULL); if ( difftime(nexttime, firsttime) > 1.0f ) { printf("firsttime = %s\n nexttime = %s\n difftime = %f\n", ctime(&firsttime), ctime(&nexttime), difftime(nexttime, firsttime)); firsttime = nexttime; } } выводятся одинаковые даты со временем, т.е. по логике разница во времени должна быть > 1 сек., но тем не менее printf отображает абсолютно одинаковые firsttime и nexttime вплоть до секунды. почему так происходит, и где я пролетел?
char* ctime(const time_t* timer) Convert time_t time value to string in the same format as asctime. The string pointed is statically allocated and shared by ctime and asctime functions. Each time one of these functions is called the content of the string is overwritten. ctime also uses internally the buffer used by gmtime and localtime as return value, so a call to this function will overwrite this. тоесть надо делать Код (Text): strcpy(sz1sttime, ctime(&firtstime); strcpy(sz2ndtime, ctime(&nextime); ...
nobodyzzz, да, теперь все работает. спасибо за помощь. оффтоп, но вот сейчас попробовал реализовать то же самое при помощи SDL либы и ее ф-ций, т.е. применил: Код (Text): uint firsttime = SDL_GetTicks(); uint nexttime = firsttime; uint FPS = 0; for ( условие ) { //поскипано ++FPS; nexttime = SDL_GetTicks(); if ( nexttime - firsttime > 1000 ) { printf("FPS = %d\n", FPS); FPS = 0; firsttime = nexttime; } } и FPS в 2 раза с лишним б0льший высчитывается чем ежели как в посте #1 применять работу с unix ф-циями по получению разницы во времени для того чтобы производить расчеты. непонятно, т.к. диапазон по времени что в посте #1, что здесь указан 1 секунда (или 1000 миллисекунд как здесь, что одно и то же ведь), а FPS совсем разные высчитываются. может и здесь меня ткнете носом куда надо) спасибо.