#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Die Methode schneidet von der Zeile die Zeit raus*/
char * substr(const char * text, int beg, int end) {
int i;
char *sub = 0;
int len = end - beg;
if (text)
if (text + beg)
if (0 < len)
if ((sub = (char *) malloc(1 + len))) {
for (i = beg; text[i] != '\0' && i < end; i++)
sub[i - beg] = text[i];
sub[i - beg] = '\0';
}
return sub;
}
/* InZeitUm-methode nimmt die String ein und umwandelt in Zeit */
int InZeitUm(char * zeit) {
/*Stunde wird berechnet*/
char * subS = substr(zeit, 0, 2);
int stunde = atoi(subS);
int st = stunde * 60 * 60 * 1000;
/*Minute wird berechnet*/
char * subM = substr(zeit, 3, 5);
int minute = atoi(subM);
int mi = minute * 60 * 1000;
/*Sekunde wird berechnet*/
char * subSek = substr(zeit, 6, 8);
int sek = atoi(subSek);
int se = sek * 1000;
/* MilliSekunde wird ausgegeben*/
char * MiSek = substr(zeit, 9, 12);
int msek = atoi(MiSek);
/*Gesamte Zeit in MilliSekundent*/
int ges = st + mi + se + msek;
// printf("GesamtZeit: %d \n", ges);
return ges;
}
int main(int argc, char** argv) {
FILE *pFile; /*Zeiger für File */
int maxAnz=170;
char zeile1[maxAnz]; /*wieviele Zeichen soll gelesen werden wenn die File geöffnet wird*/
char zeileV[maxAnz];
int difZeit; /*Differenz von weggegangene und gekommene Zeit wird hier gespeichert*/
int ankZeit; /*angekommene Zeit von Sample*/
int wegZeit; /*weggegangene Zeit von Sample*/
int boolean;
int ungZahl;
char * sub1; /*Von erste gesuchte Word die Zeit wird rausgeschniten und hier gespeichert*/
char * sub2; /*Von zweite gesuchte Word die Zeit wird rausgeschniten und hier gespeichert*/
int countSw1 = 0; /*Zaehler für erste gesuchte Word*/
int countSw2 = 0; /*Zaehler für zweite gesuchte Word*/
int abweiAnz = 0;
int maxZeit = 0;
char filename[50] = "/home/lukasN";
const char suchstring1[50] = "Lukas Maly gekommen";
const char suchstring2[50] = "Lukas Maly weg"; // PROBLEME IST HIER wenn war falsche suchWort eingegeben sollte Fehlermeldung kommen
printf("===========================================================================\n");
pFile = fopen(filename, "r"); /*File wird zum lesen geöffnet*/
if (pFile != NULL) { /*Mache weiter wenn File da ist*/
while ( fgets(zeile1, maxAnz, pFile)) { /*Mache so lange bis nicht bis zu Ende gekommen bist*/
if (strstr(zeile1, (suchstring1)) != NULL) { /*Suche in erste Zeile die erste gesuchte Word */
sub1 = substr(zeile1, 13, 25); /*substr zum Zeit rausschneiden wird aufgerufen, in sub1 gespeichert*/
countSw1++;
// printf("%d-An: %s\n",countSw1, sub1); /*um sehen wann gekommen*/
if(boolean==1){
printf("ERROR. Angekommen ohne weg: %s\n", zeileV);
printf("___________________________________________________________________________\n");
}
boolean = 1;
strcpy(zeileV, sub1); // springe ein mal nach vorne
ankZeit = InZeitUm(sub1);
}
if (strstr(zeile1, (suchstring2)) != NULL) { /*strstr sucht in der Zeile 2-te gesuchte Word*/
sub2 = substr(zeile1, 13, 25); /*substr zum Zeit rausschneiden wird aufgerufen, in sub1 gespeichert*/
wegZeit = InZeitUm(sub2); /*InZeitUm wird gerufen und String in ms umgewandelt*/
countSw2++; /*Zaehler für 2-te gesuchte Word wird auf eins erhoeht*/
boolean = 0; //Ging, also nicht mehr da
strcpy(sub1, zeileV);
ankZeit = InZeitUm(zeileV);
wegZeit = InZeitUm(sub2);
// printf("%d-Weg: %s\n\n",countSw2, sub2); /*um sehen wann weggegangen*/
if (0 >= ankZeit) {
printf("Error :Kein Wort im Text: %s\n", suchstring1);
abort();
}
else
{
difZeit = wegZeit - ankZeit; /*Differenz wird gezaehlt */
if (maxZeit < difZeit) { /*Wenn Differenz war groesser als eingegebene Zeit */
printf("An: %s Weg: %s Differenz:%5d ms \n", sub1, sub2, difZeit); /*Wird dann hier angezeigt*/
abweiAnz++; /*Zaehler für Abweichung wird auf eins erhoeht */
printf("___________________________________________________________________________\n");
}
}
}
}
if (abweiAnz == 0) { /*Wenn waren keine Abweichungen wird gezeigt das alles gut gelaufen ist*/
printf("Es waren keine Abweichungen\n");
}
if (countSw2 == 0) { // PROBLEME IST HIER
printf("Kein Wort im Text: %s\n", suchstring2);
abort();
}
fclose(pFile);
} else {
printf("File ist nicht gefunden\n"); /*Wenn File könnte nicht geoeffnet werden, wird dieses angezeit*/
abort();
}
printf("%d-Abweichungen ", abweiAnz);
if (countSw1 != countSw2) {
ungZahl = countSw1 - countSw2;
abweiAnz = abweiAnz + ungZahl;
printf("+ %d-Angekommene ohne Weggegangene = %d gesamte Abweichungzahl\n", ungZahl, abweiAnz);
}
float stat = (float) abweiAnz / countSw1 * 100; /*Wieviel Prozent abweichung aufgetretten wird berechnet*/
printf("\n===========================================================================\n");
printf("1-te gesuchte Word:%d, 2-te gesuchte Word:%d Abweichungen:%d \n", countSw1, countSw2, abweiAnz);
printf("\nVon %d-Testen waren %d -Abweichungen\n", countSw1, abweiAnz);
printf("Statistische Ergebnisse: %.2f %%\n\n", stat);
return (EXIT_SUCCESS);
}