Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit localtime

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.04.2006, 18:53 Uhr
~wolbi
Gast


hi, habn kleines problem
das is mein code...


C++:
#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    int result;
    long loop;
    time_t zeit1, zeit2;
    tm* start;
    tm* ende;

    time(&zeit1);
    start = localtime(&zeit1);

    for(loop = 0; loop < 1000000000; loop++)
        result = 3.63 * 5.27;

    time(&zeit2);
    ende = localtime(&zeit2);

    cout << zeit1 << endl;
    cout << zeit2 << endl;
    cout << start->tm_sec << endl;
    cout << ende->tm_sec << endl;

    return 0;
}



wie man sieht nehm ich die zeit (speicher sie in zeit1), lass dann meinen rechner n paar millionen mal was multiplizieren (dauert bei mir ca. 3 sek), und speicher die zeit danach in zeit2. diese zeiten wandel ich dann jeweils noch mit localtime in ne tm-struct um...

gut, dann geb ich das janze aus sieht dann folgendermaßen aus:

1145119632
1145119635
15
15

die ersten zwei zeilen passen ja: 3 sekunden unterschied, aber warum sind die sekunden in der struktur genau gleich... müsste doch eigentlich 15 und 18 und nich 15 und 15 heißen???

ich checks nich!

hoffentlich versteht ihr mein problem und könnt mir weiterhelfen...

gruß wolbi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.04.2006, 19:17 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn ich bei mir obiges programm mit optimierung kompilier kommt das raus:

1145119632
1145119632
15
15



Dein Problem dürfte sein, das localtime einen internen speicher verwendet, welcher zurückgeliefert wird, wodurch start und ende auf den gleichen speicher zeigen, man könnte das z.B so korrigieren:


C++:
void localtime_s(struct tm *timeptr,const time_t *timer)
{
  struct tm *tmm;

  if(timeptr == NULL || timer == NULL)
    return;
  
  tmm = localtime(&timer);
  
  memcpy(timeptr, tmm, sizeof(tm));
}



das wär "safe"
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.04.2006, 19:31 Uhr
~wolbi
Gast


aso, danke für die schnelle antwort, werds später mal ausprobieren...
gruß wolbi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: