prob mit localtime



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

    #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



  • localtime() liefert einen Zeiger auf eine interne Struktur tm zurück. Wird nun localtime() mehrfach hintereinander aufgerufem, so wird immer nur der letzte "Wert" gespeichert. Zur Abhilfe könntest du eine temporäre Struktur tn anlegen und das Ergebnis des ersten Aufrufs reinkopieren.

    tm temp;
    start = localtime(&zeit1);
    temp = *start;
    

    Achja: Enscheide dich für C oder C++ 😉



  • ahhhso, vielen dank...

    gibts denn ein c++ pendant zu den ganzen time funktionen???



  • wolbi schrieb:

    gibts denn ein c++ pendant zu den ganzen time funktionen???

    Afaik nicht. Mein Einwand bezog sich auch mehr darauf, dass du hier in "ANSI C" mit C++ Code/Funktionen ankommst.



  • aber localtime (time.h) wos hier ja drum ging is ja ansi-c...^^




Anmelden zum Antworten