|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2017, 20:36 | #1 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
time_t & struct tm глюки со временем
Доброго времени суток.
Считал дату и время из файла в формате: количество секунд от 06.01.1980 00:00:00 до рассчитываемой даты. Считанные даты представляют собой список из 1450 строк (нас интересует первые 2 столбца). Вот несколько последних: Код:
typedef struct { unsigned int timeGMT; struct tm localTimeGMT; double X,Y,Z; float VX,VY,VZ; struct GSKpackage* next; } GSKpackage; Иду по списку и с помощью написанной функции вычисляю дату: Код:
Сам проход по списку: Код:
Код:
Код:
Я не правильно делаю преобразования из struct tm в time_t и обратно? Как исправить? Спасибо. ПС По растущему количеству секунд от 06.01.1980 (второй столбец) можно сделать вывод, что я считал время правильно. Ошибка зарылась именно в преобразовании. |
14.11.2017, 20:45 | #2 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
#define Secs 18
Secs константа, если что. |
14.11.2017, 21:25 | #3 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
Помогло после объявления структуры вот что
Код:
Я всегда должен, объявляя любую структуру, делать memset? Я раньше никогда его не делал, и всё работало. |
14.11.2017, 21:35 | #4 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
свои структуры я тоже должен обнулять таким образом?
Код:
|
14.11.2017, 21:54 | #5 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
Никто не хочет отвечать.
Везде обнулил созданные переменные структур. Думаю, лишним не будет. Видимо, это чисто сишная вещь. А до этого писал на С++. |
14.11.2017, 22:02 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,726
|
Это и С, и С++ вещь. Компилятор в релизе не чистит локальные переменные.
|
14.11.2017, 22:20 | #7 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 138
|
|
14.11.2017, 22:29 | #8 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
На С++ вы привыкли к конструкторам - они делают значение по умолчанию 0. Но, если, нет конструктора, то компилятор ничего не делает сам. Там мусор. Причем мусор условный, скажем, если вы не запускаете 100500 программ и вкладок броузера, то операционка вам весь день будет давать программе 1 и ту же страницу памяти, которая изначально 0, а потом вашими "почти верными" данными забита. И вы ничего не заметите.
Даже в дебуг сборках есть ключи - забивать все мусором рандомным принудительно (т.е. компилер сам "чистит", но мусором), что позволяет выявлять вот все такое. Последний раз редактировалось alexzk; 14.11.2017 в 22:35. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Реализовать struct Группа(group), в которой содержатся struct Студент(Student) | TokaChan | Помощь студентам | 2 | 07.07.2016 07:22 |
не перегружается ostream& operator<<(ostream &, Card&) | Antej | Общие вопросы C/C++ | 2 | 17.12.2012 14:02 |
fstream && struct | Hacker19_90 | Общие вопросы C/C++ | 12 | 03.06.2012 11:50 |
Вывод значения time_t и значения uid_t и gid_t | papos | Помощь студентам | 0 | 23.02.2011 21:49 |
TForm & TImage & PNG & Прозрачность | delphi_beginner | Общие вопросы Delphi | 7 | 19.09.2009 08:46 |