shibumi schriebIch weiß aber nicht wie gut deine assembler kenntnisse da sind um richtig zu debuggen.
Das war zu C64 Zeiten 😃, und dazwischen mal ein kleiner Atmel auf dem ich herumgespielt habe.
stackoverflow ist eine gute Idee...
Probier ich mal
maltem schriebSoll das etwa ein vollständiges ... Beispiel sein?
Du hattest recht, die Variablendeklaration hat gefehlt - das war auch der Grund für das Fehlverhalten.
Falls jemand anderer das gleiche Problem hat, so funktionierts:
char *ptr;
long datum;
long zeit;
struct tm tmnow;
// datagram ist ein string der Form:
// "Hallo yyyyMMdd HHmmss"
ptr = strtok(datagram, " ");
datum = atol(ptr); // long im Format: yyyymmdd z.B. 20140511
tmnow.tm_mday = datum % 100;
tmnow.tm_mon = ((datum / 100) % 100) - 1;
tmnow.tm_year = (datum / 10000) - 1900;
ptr = strtok(NULL, " ");
zeit = atol(ptr); // long im Format: hhmmss z.B. 081407
tmnow.tm_sec = zeit % 100;
tmnow.tm_min = (zeit / 100) % 100;
tmnow.tm_hour = zeit / 10000;
struct timeval sysTime;
sysTime.tv_sec = mktime(&tmnow);
sysTime.tv_usec = 0;
struct timezone sysZone;
sysZone.tz_minuteswest = 60;
sysZone.tz_dsttime = 1;
settimeofday(&sysTime, &sysZone);
Danke Shibumi und Maltem