<time.h> Probleme mit auslesen von struct tm
-
probier mal
#include <sys/time.h>
-
was es gibt, ist folgendes:
struct tm * getdate(const char *string);
so muss das irgendwo in den time-headern deklariert sein, ist nicht deine sache, allerdings konvertiert das nur eine datumsangabe in const char * string in eine time-structure...
-
Leider funkt des nicht ... ich poste mal kurz die Datumsfunktion ...:
void datum_calc(char datum[7]){ int len,a; char day[3],month[3],year[5],convert[5]; struct tm d; getdate(&d); //Datum einlesen a=0; /* Tag ermitteln und in day einlesen */ itoa(d.tm_mday,convert,10); if ((len=strlen(convert))==1){ //wenn Tag einstellig, null davorsetzen strcpy(day,"0"); a++; day[a]=convert[0]; } else strcpy(day,convert); day[a+1]='\0'; //string abschließen a=0; /* Monat ermitteln und in day einlesen */ itoa(d.tm_mon,convert,10); if ((len=strlen(convert))==1){ //wenn Monat einstellig, null davorsetzen strcpy(month,"0"); a++; month[a]=convert[0]; } else strcpy(month,convert); month[a+1]='\0'; //string abschließen /* Jahr einlesen und auf die letzten beiden Stellen abschneiden (Format JJ anstatt JJJJ) */ itoa(d.tm_year,convert,10); for(a=0;a<2;a++){ // letzten beiden stellen übertragen year[a]=convert[a+2]; } /* Datum zusammenfügen TTMMJJ */ year[a]='\0'; //string abschließen strcpy(datum,day); strcat(datum,month); strcat(datum,year); }
Soo ... und bei dem getdate(); bekomme ich folgenden Fehler:
Linker-Vorgang läuft... sheet.obj : error LNK2001: Nichtaufgeloestes externes Symbol _getdate Debug/sheet.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Weil der VS6 des F*** getdate() nicht kennt ... aber den Borland habe ich hier nicht ... deswegen muss ich mein Programm umschreiben, und daran hängts jetzt
-
hmm... irgendne std-lib nicht mit reingelinkt, keine ahnung...
-
Mhh des Problem ist ... in der time.h ist des getdate eben nicht drin !?
-
da muss ich leider passen... musst du warten, bis jemand anders sich mit diesem thread beschäftigt...
-
Ok ... trotzdem danke ...
notiz an mich selber: mhh ich hasse VS6.0
-
http://www.cplusplus.com/ref/ctime/
Viel Spaß!
PS: VS6 kann da nichts dafür, wenn DU Funktionen verwendest, die nicht Standard sind.
-
Naja Danke,
kann ich was dafür wenn der VS6 zu blöd für en getdate(*); ist?
Wie schreibe ich des dann, dass ich folgendes format nachher rausbekomme als datum:
DDMMYY
???
-
steht doch fast alles dort... sei mal nich so faul und denk selber mal ein bisschen nach
-
Hey ich bin da heute zu blöd dafür ... sry ... weil so weit war ich auch schon ... mal zu googeln ... hab gedacht hier kann mir vielleicht jemand sinnvoll weiterhelfen ...
-
du holst dir struct * tm von localtime und in der struct drinne sind members wie tm_mday, tm_mon, tm_year, dann ein printf:
time_t rawtime; time ( &rawtime ); struct tm * mytime = localtime ( &rawtime ); printf ("%d%d%d", mytime->tm_mday, mytime->tm_mon, mytime->tm_year-100);
-
Hmm, danke ... jetzt kapier ich des auch mal ... blos eine Frage habe ich noch ... warum hagelt des bei mir Fehlermeldungen ohne Ende:
//edit:
sry Programm vergessen:#include <time.h> #include <stdio.h> void main(void){ time_t rawtime; time (&rawtime); struct tm *mytime = localtime (&rawtime); printf ("%d%d%d", mytime->tm_mday, mytime->tm_mon, mytime->tm_year-100); system("PAUSE"); }
C:\Documents and Settings\md77fe\Desktop\datum\date.c(9) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type' C:\Documents and Settings\md77fe\Desktop\datum\date.c(11) : error C2065: 'mytime' : nichtdeklarierter Bezeichner C:\Documents and Settings\md77fe\Desktop\datum\date.c(11) : error C2223: Der linke Teil von '->tm_mday' muss auf eine Struktur/Union zeigen C:\Documents and Settings\md77fe\Desktop\datum\date.c(11) : error C2223: Der linke Teil von '->tm_mon' muss auf eine Struktur/Union zeigen C:\Documents and Settings\md77fe\Desktop\datum\date.c(11) : error C2223: Der linke Teil von '->tm_year' muss auf eine Struktur/Union zeigen
bin heute en bissle durch den Wind geschossen ... sry
-
Sry Ich bin dumm ... hier die Lösung und ich belästige euch nichtmehr weiter mi diesem Thema:
#include <time.h> #include <stdio.h> void main(void){ struct tm *mytime; time_t rawtime; time (&rawtime); mytime = localtime (&rawtime); printf ("%d | %d | %d", mytime->tm_mday, mytime->tm_mon, mytime->tm_year-100); system("PAUSE"); }
Danke an alle die mir geholfen haben ...
-
#include <stdio.h>
#include <locale.h>
#include <time.h>
.
.
.time_t myTime;
struct tm* day;
char s[101];time(&myTime);
day = localtime(&myTime);strftime(s, 100, "%#d %b %x", day);
fprintf (stdout, s);@soul ist das C oder C++? bei C müssen erst aller variablen deklariert werden, bevor du irgendwelche befehle hintipen kannst ;o)
-
Hat ja jetzt funktioniert ... so wie ichs gebraucht habe ... -> Programmiere in C
-
frager0815 schrieb:
@soul ist das C oder C++? bei C müssen erst aller variablen deklariert werden, bevor du irgendwelche befehle hintipen kannst ;o)
das war mein fehler
bin halt C++ler..
-
Soul schrieb:
kann ich was dafür wenn der VS6 zu blöd für en getdate(*); ist?
Nochmal, was kann VS6 dafür, dass Du eine Funktion verwendest, die nicht im Standard definiert ist? Ich bin mir fast sicher, dass es in VS6 auch eine Art getdate() gibt, nur dass die Funktion hald anders heißt und auch andere Parameter bzw. Datentypen verwendet.
Und bitte ersetz das system("PAUSE") durch was sinnvolles. Siehe dazu Konsolen-FAQ!
(*psst*flüster* manche sehen das void vor main nicht gerne)
-
Ja .. schon klar ... war auch blos kurz die Funktion zum Testen ... normalerweise gebe ich en return zurück ... aber des war da net nötig ... blos um des kurz zu kompilieren ...omg