Ошибка В Localtime

Тема в разделе "Общие вопросы по С и С++", создана пользователем Pingvin1, 20 сен 2014.

  1. Pingvin1

    Pingvin1 Well-Known Member

    Регистрация:
    20 июл 2009
    Сообщения:
    50
    Симпатии:
    0
    При переходе на 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;
    }
    Что делать?
     
  2. Pingvin1

    Pingvin1 Well-Known Member

    Регистрация:
    20 июл 2009
    Сообщения:
    50
    Симпатии:
    0
    Гипотиза: Так как Windows 8.1 32 битная, а Def C++ только 64, то вторая под первой полностью не работает.
     
  3. Streletz

    Streletz Active Member

    Регистрация:
    6 сен 2014
    Сообщения:
    40
    Симпатии:
    4
    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;
     
  4. Pingvin1

    Pingvin1 Well-Known Member

    Регистрация:
    20 июл 2009
    Сообщения:
    50
    Симпатии:
    0
    Переутановил Windows 8.1 на 64 Бит - таже ошибка. Определил переменную как указатель, ошибка пропала, спасибо.
     
Загрузка...

Поделиться этой страницей