Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Datum als Integer bzw. Typumwandlung string in int

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
-=edm=-
Gast





BeitragVerfasst am: 06. Jun 2004 23:50   Titel: Datum als Integer bzw. Typumwandlung string in int

Hi
ich muss das aktuelle datum in folgender form in eine binärdatei schreiben:
Code:

00 04 06 07
[00] [Jahr 2 stellig] [Monat] [Tag]


Ich hab aber absolut kein plan. suche in google hat auch nix gebracht. ich komme so weit, dass das datum als string in ner variable steht. Wenn ich aber die Variable direkt in die datei schreibe, steht natürlich was anderes drin.

Ich könnte natürlich jeweils jahr, monat und tag in einzelnen strings speichern und diese dann in int umwandeln. Wie funktioniert aber ein cast von string nach int ?

Oder hat jemand eine andere idee wie man das ganze anstellen könnte ?
 

gast
Gast





BeitragVerfasst am: 07. Jun 2004 0:12   Titel: Re: Datum als Integer bzw. Typumwandlung string in int

nimm einfach eine unsigned long variable und speicher es im binärmodus in einer datei.:

unsigned long datum = 0x00040607;

fwrite(&datum,sizeof(datum),1,fopen("blabla.txt","ab"));
 

is nich
Gast





BeitragVerfasst am: 07. Jun 2004 10:43   Titel: datum

wozu erst ein string aus den daten machen?

#include <stdio.h>
#include <time.h>

int main(){
time_t rawtime;
struct tm * timeinfo;

time ( &rawtime ); //accepts a pointer
timeinfo = localtime ( &rawtime );
char ofilename[] = "mytime.bin";
FILE *ofp;

ofp = fopen(ofilename,"wb");
fputc((timeinfo->tm_year - 100), ofp);
fputc(timeinfo->tm_mon, ofp);
fputc(timeinfo->tm_mday, ofp);
fclose(ofp);

}
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 07. Jun 2004 11:04   Titel:

Hi!

Es ist unfaßbar. Kaum ist die Jahrhundertwende vorbei mit ihren bekannten Problemen, fangen schon wieder irgendwelche Lernunfähige damit an, Jahreszahlen zweistellig zu speichern. Davon abgesehen, hättest du den Code zeigen können, damit man Verbesserungsvorschläge machen kann.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

-=edm=-
Gast





BeitragVerfasst am: 07. Jun 2004 13:53   Titel:

@gast

es sollte schon das _aktuelle_ datum sein Smile
ausserdem codiert doch intel little endian. wenn dann so:
unsigned long datum = 0x07060400;

@is nich
Danke,
funzt wunderbar. Beim Monat muss man noch ne 1 addieren. ist aber normal, oder ?

@hjb
sonst noch was zu meckern ??

Aber ich werd es dir erklären: Das ganze muss in eine dBase datei geschrieben werden und zeigt nur das änderungsdatum. Laut der formatbeschreibung ist aber für das jahr nunmal nur 1 Byte vorgesehen. Das Jahr kann man wohl direkt reinschreiben oder so, dass die summe mit 1900 das aktuelle jahr ergibt, also 104 => Jahr zw. 1900-2155 möglich. Da es kein Problem ist, 100 bzw. 200 dazuzuaddieren habe ich die frage wie oben formuliert.
Allerdings scheit c den Wert eh so zu übergeben (Habe halt gedacht, es geht nur 2 oder 4 stellig). Deshalb habe ich die Frage so formuliert und wollte einfach noch 100 bzw. 200 jeweils addieren lassen.

Auch wenn das Problem gelöst ist, hier nochmal mein alter code:
Code:

#include <stdlib.h>
int main ()
{
   char zstring[7];
   time_t zeit;
   time(&zeit);
   strftime(zstring,6,"%y%m%d",localtime(&zeit));
   return 0;
}
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy