• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Ошибка В Localtime

  • Автор темы Pingvin1
  • Дата начала
P

Pingvin1

При переходе на Windows 8.1, стала выводится ошибка в строке при определение текущего времени localtime (&rawtime); :[Error] no match for 'operator=' (operand types are 'tm' and 'tm*')
Компилятор TDM-GCC 4.8.1 32-bit Release устанавливаемый по умолчанию в Dev-Cpp 5.7.0 TDM-GCC x64 4.8.1

Вся вся программа:
C++:
#include <stdio.h>//sprintf и sscanf, файловый ввод-вывод, fopen макрос NULL
#include <ctime>
#include <stdlib.h>//exit int atoi(const char *str);
#include <string.h> //- Функции для обработки строк
#include <iostream>// cin cout
using namespace std;// cin cout
FILE * f; 
time_t rawtime;
char tectime[20];
struct tm timeinfo;

int main()	{
time (&rawtime);				 // установка текущай даты и времени в секундах
timeinfo = localtime ( &rawtime ); // текущее локальное время, представленное в структуре, на входе секунды, на выходе структура
sprintf(tectime,"%d!%d-%d^%d",timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
return 0;
}
Что делать?
 
P

Pingvin1

Гипотиза: Так как Windows 8.1 32 битная, а Def C++ только 64, то вторая под первой полностью не работает.
 
S

Streletz

Гипотиза: Так как Windows 8.1 32 битная, а Def C++ только 64, то вторая под первой полностью не работает.
64-разрядное приложение в 32-разрядной системе вообще не запустится. Так что гипотезу придётся отклонить :angry2: .
Что же касается Вашей проблемы, то её можно решить используя стандартный способ работы с localtime.
C++:
char tectime[20];
struct tm *ptr;
time_t lt;
lt = time(NULL);
ptr = localtime(&lt);
sprintf(tectime, "%d %d:%d:%d", ptr->tm_mday, ptr->tm_hour, ptr->tm_min,
ptr->tm_sec);
printf(tectime);
getch();
return 0;
 
P

Pingvin1

Переутановил Windows 8.1 на 64 Бит - таже ошибка. Определил переменную как указатель, ошибка пропала, спасибо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!