Aktuelle Zeit in Logdatei



  • Hi erstmal,
    also ich bin noch nicht so lange am programmieren (von schule aus seit september, da machen wir grad arrays...) und hab mal folgendes Programm geschrieben:

    int main()
    {
        FILE *log;
        int a=5, b=10, c=15;
        int erg;
        log = freopen("logfile.txt", "a", stderr);
        fprintf(stderr, "a hat den Wert %i, b den Wert %i und c den Wert %i", a, b, c);
        erg=a+b;
        fprintf(stderr, "\n\nerg hat den Wert %i", erg);
        erg=erg/c;
        fprintf(stderr, "\n\nDas Endergebnis wurde auf den Wert %i gesetzt.", erg);
        printf("\n\n\nDas Ergebnis lautet %i\n\n\n", erg);
        system("PAUSE");
        return 0;
    }
    

    Ich wollt einfach mal wissen, was man mit so einer Logdatei alles machen kann und nun frag' ich mich, wie ich die aktuelle Zeit in diese Logdatei bekommen kann.

    (z.B. zum zeitpunkt xx hatte a den wert x oda so.)

    Kann ich das mit time(0) machen? Wenn ja, welchen Formatspezifizierer muss ich innerhalb von fprintf dann verwenden? Ich habs mal mit %s probiert, aber dann stürzte das Programm sobald es zu der ausgabe in stderr kam ab.

    Bitte um Hilfe,
    mfg
    marcotesoalli



  • #include <time.h>
    #include <stdio.h>
    
    int main( void )
    {
    	time_t now = 0;
    	struct tm *gmnow = 0;
    
    	time( &now );
    	gmnow = gmtime( &now );
        puts( asctime( gmnow ) ); // asctime( ) gibt einen Pointer auf einen
                                  // String für 'now' zurück (UNIX Standardformat).
    }
    

    cheers, Swordfish



  • time() will einen Zeiger, also ganz korrekt sollte man time(NULL) sagen. Rückgabe ist time_t, ein ganzzahl-artiger Typ; also %d für printf. Ist btw die Anzahl der vergangenen Sekunden im Unix-Zeitalter.



  • type-flamer schrieb:

    time() will einen Zeiger, also ganz korrekt sollte man time(NULL) sagen.

    Aha, und &now ist natürlich kein Zeiger, gell?
    Bist du eigentlich mit *-freak verwandt?

    cheers, Swordfish

    PS: NULL oder 0 ist egal, da sowieso implizit gecastet wird.



  • Ok, so hat's funktioniert nur liegt bei mir die Zeit 2 Stunden zurück, woran liegt das? 😮 also die windowszeit stimmt, ist das nicht auch die zeit mit der die Funktion rechnet?
    Auch wenn ich den Code wie Swordfish ihn gepostet hab eingeb, hab ich das Problem...

    mfg,
    marcotesoalli



  • gmtime( ) liefert die Greenwich Mean Time. Die Lokale Zeit bekommst du mit localtime( ) .
    cheers, Swordfish



  • Ok jetzt geht's, dankeschön

    mfg,
    marcotesoalli



  • char timedatestr[30];
    time_t now = time(NULL);
    
    strftime(timedatestr, sizeof(timedatestr), "[%H:%M:%S %m/%d/%Y]", localtime(&now));
    

Anmelden zum Antworten