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
oder0
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 mitlocaltime( )
.
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));