Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > struct tm targetDate;


Автор: graff9 30.7.2009, 18:59
доброго времени суток! Подсткажите что такое 
struct tm targetDate;
и
memset(&targetDate, 0, sizeof(targetDate));

Автор: andrew_121 30.7.2009, 19:01
graff9, Это структура, описанная в <sys/time.h>

Автор: graff9 30.7.2009, 19:06
Всмысле...
Ну кпримеру есть код
Код


#include <time.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#ifdef WIN32
# define SLEEP(x) Sleep(x)
#else /* WIN32 */
# include <unistd.h>
# define SLEEP(x) usleep(x*1000)
#endif /* WIN32 */
#include <iostream>
#define _WIN32_WINNT 0x0500
 
int main()
{  
   struct tm targetDate; 
   memset(&targetDate, 0, sizeof(targetDate));
  
 //задаем дату
   targetDate.tm_year = 110; //год от 1900
   targetDate.tm_mon = 6; //месяц
   targetDate.tm_mday = 9; //день
   time_t tDate = mktime(&targetDate); //это указанная дата в секундах от 01.01.1970
   do{ 
       system ("cls");
       time_t curTime = time(NULL); //текущее время в секундах от 01.01.1970
       time_t dtime = tDate - curTime; //сколько осталось времени (в секундах, общее)
       time_t dsec = dtime%60; //сколько секунд осталось
       time_t dmin = (dtime/60)%60; //сколько минут осталось
       time_t dhour = ((dtime/60)/60)%24; //сколько часов осталось
       time_t ddays = ((dtime/60)/60)/24; //сколько дней осталось
       printf ("\n");
       printf ("   осталось %lu дн. %lu час. %lu мин. %lu сек.\n", (unsigned long) ddays, (unsigned long) dhour, (unsigned long) dmin, (unsigned long) dsec);
       SLEEP(1000); //ждем секунду
   } while (1);
   return 0;
}


нужно на словах описать алгоритм действия программы...ну то что в цикле то понятно
а вот как описать 

struct tm targetDate; 
memset(&targetDate, 0, sizeof(targetDate));
и while (1)

Автор: andrew_121 30.7.2009, 19:36
Цитата(graff9 @  30.7.2009,  19:06 Найти цитируемый пост)
struct tm targetDate; 

декларация переменной targetDate типа struct tm

Цитата(graff9 @  30.7.2009,  19:06 Найти цитируемый пост)
memset(&targetDate, 0, sizeof(targetDate));

обнуление всех членов структуры.

Цитата(graff9 @  30.7.2009,  19:06 Найти цитируемый пост)
while (1) 

бесконечный цикл.

Автор: graff9 30.7.2009, 19:39
спс, тут ясно... еще такое подскажите, как она (с помощью чего) узнает системное время каждую секунду...

Автор: andrew_121 30.7.2009, 19:44
в коде написанно
Цитата(graff9 @  30.7.2009,  19:06 Найти цитируемый пост)
 time_t curTime = time(NULL); //текущее время в секундах от 01.01.1970


Автор: graff9 30.7.2009, 20:19
супер, это ясно, и последнее 
что такое %60

И каким образом была задана дата события (есле словесно)
Код

   targetDate.tm_year = 110; //год от 1900
   targetDate.tm_mon = 6; //месяц
   targetDate.tm_mday = 9; //день
   time_t tDate = mktime(&targetDate); //это указанная дата в секундах от 01.01.1970

Автор: andrew_121 30.7.2009, 21:53
а хоть немного пошивилить извилинами, это не про вас, да?
http://www.cplusplus.com/reference/clibrary/ctime/tm/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)