OK ich hab ewig rumprobiert und finde das problem nicht
ich bin grad am schreiben einer datei die eine .txt datei für mich einließt und das letzte datum findet und speicher.
das letzte datum steht aber nicht in der letzten zeile deswegen bin ich einfach das ganze dokument durchgegangen und hab nach zeilen mit der struktur MMM TT JJJJ hh:mm:ss (zb JUL 30 2008 23:45:15) gesucht und diese abgespeichert.
funktiniert auch super, ABER
das letzte datum (AUG 08 2008) wird nicht als AUG 8 2008 23:30:20 sondern als AUG 0 8 2008:30:20 eingelesen.
Hier mal der Quelltext den ich geschrieben hab:
------------------------------------------------------------------------------------------------------------------------------------------------------------
Es is warscheinlich nicht die beste lösung für das problem aber eigentlich sollte es funktionieren
Das problem entsteht bei diesen zeilen der .txt datei:
für diesen abschnitt bekomme ich die ausgabe:
Das problem ist das fscanf() für temp_tag die "0" statt der "8" einließt aber ich versteh nicht warum
Das programm funktioniert für jeden anderen Tag außer für den 8.AUG.
Vielen dank für jede Hilfe und Bemühungen
SaimenD
ich bin grad am schreiben einer datei die eine .txt datei für mich einließt und das letzte datum findet und speicher.
das letzte datum steht aber nicht in der letzten zeile deswegen bin ich einfach das ganze dokument durchgegangen und hab nach zeilen mit der struktur MMM TT JJJJ hh:mm:ss (zb JUL 30 2008 23:45:15) gesucht und diese abgespeichert.
funktiniert auch super, ABER
das letzte datum (AUG 08 2008) wird nicht als AUG 8 2008 23:30:20 sondern als AUG 0 8 2008:30:20 eingelesen.
Hier mal der Quelltext den ich geschrieben hab:
------------------------------------------------------------------------------------------------------------------------------------------------------------
Code:
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "float.h"
int tag=0, jahr=0, h=0, m=0, s=0, null=0;
int temp_tag=0, vergl_tag=0, temp_jahr=0, temp_h=0, temp_m=0, temp_s=0;
int ltag=0, ljahr=0, lh=0, lm=0, ls=0;
char temp_monat[3], monat[3], lmonat[3], zeile[150];
FILE *eingabe, *ausgabe;
int TageImMonat(char*);
int main(void) {
eingabe = fopen("K:\\camerobot\\Temp.txt", "r"); //errors.log öffnen
ausgabe = fopen("K:\\camerobot\\errorday.txt", "w"); //Ausgabedatei öffnen
if (eingabe==NULL)
{
printf("Programm konnte nicht eingelesen werden"); //Zeigt fehler beim einlesen der datei
fprintf(ausgabe,"Programm konnte nicht eingelesen werden");
return 0;
}
do
{
fgets(zeile,150,eingabe);
sscanf(zeile,"%s %i %i %i:%i:%i",temp_monat, &temp_tag, &temp_jahr, &temp_h, &temp_m, &temp_s);
vergl_tag=TageImMonat(temp_monat);
if(vergl_tag!=0)
{
strcpy(monat,temp_monat);
tag=temp_tag;
jahr=temp_jahr;
h=temp_h;
m=temp_m;
s=temp_s;
printf("%s %i %i %i:%i:%i\n",monat,tag,jahr,h,m,s);
fprintf(ausgabe,"%s %i %i %i:%i:%i\n",monat,tag,jahr,h,m,s);
}
}
while(!feof(eingabe));
strcpy(lmonat,monat);
ltag=tag;
ljahr=jahr;
lh=h;
lm=m;
ls=s;
printf("Das letzte Datum=%s %i %i %i:%i:%i",lmonat,ltag,ljahr,lh,lm,ls);
fclose(eingabe);
fclose(ausgabe);
return 1;
}
int TageImMonat(char* x)
{
if (!strcmp(x,"FEB")) return 29;
else if(!strcmp(x,"APR") || !strcmp(x,"JUN") || !strcmp(x,"SEP") || !strcmp(x,"NOV")) return 30;
else if(!strcmp(x,"JAN") || !strcmp(x,"MAE") || !strcmp(x,"MAY") || !strcmp(x,"JUL") || !strcmp(x,"AUG") || !strcmp(x,"OKT") || !strcmp(x,"DEZ")) return 31;
else return 0;
};
Es is warscheinlich nicht die beste lösung für das problem aber eigentlich sollte es funktionieren
Das problem entsteht bei diesen zeilen der .txt datei:
HTML:
AUG 07 2008 23:53:56]: CPU temperature: 48°C
AUG 08 2008 00:48:41]: Settling arm power...
AUG 08 2008 00:48:42]: Arm power settled.
AUG 08 2008 00:50:34]: Arm power shutdown...
für diesen abschnitt bekomme ich die ausgabe:
HTML:
AUG 7 2008 23:53:56
AUG 0 8 2008:53:56
AUG 0 8 2008:53:56
AUG 0 8 2008:53:56
AUG 0 8 2008:53:56
Das letzte Datum=AUG 0 8 2008:53:56
Das problem ist das fscanf() für temp_tag die "0" statt der "8" einließt aber ich versteh nicht warum
Das programm funktioniert für jeden anderen Tag außer für den 8.AUG.
Vielen dank für jede Hilfe und Bemühungen
SaimenD