Gast
#4528320
Hallo,
ich möchte aus einer Textdatei Zeile für Zeile auslesen und mit einem
vogegeben Wert code und datum vergleichen. Das klappt ganz gut, da ich
einfach einen couter i nach jeder ausgelesenen Zeile hochzählen lasse
und wenn er bei 20 ist, bricht er die schleife ab.
Das Problem ist, dass ich es nicht schaffe, dass er am ende der Datei
selbst aufhört. Da ich irgendwann mehr als 20 Einträge habe findet wer
dann die letzten nicht mehr. Stelle ich den Schleifenabbruch i auf 1000,
dauert es jedesmal ewig....
Wie kann ich die schleife abbrechen wenn er am Ende einer Datei ist?
in der Datei time.csv steht:
// Datum;code;kommen;Uhrzeit
31.03.16;2485790;KOMMEN;16:07
31.03.16;2501230;KOMMEN;16:23
///// Datei früher für eine andere Operation schon mal initialisert und
wieder geschlossen
...
SdFile daten("time.csv", O_APPEND | O_WRITE);
...
daten.close();
...
///// Datei für Verleich neu geöffnet
daten.open("time.csv", O_READ);
//**************************************************
char line[60];
int i = 0;
int c;
uint32_t pos;
char* datum = date;
char* zeit = time;
int gefunden = 0;
daten.rewind();
while (1) {
pos = daten.curPosition();
if (daten.fgets(line, sizeof(line)) < 0) {
Serial.println("Line not found");
}
char cp[8];
char dat[8];
sprintf(cp,"%ld",code);
Serial.print("i = ");
Serial.print(i);
Serial.print(" / ");
Serial.write("**Line: ");
Serial.print(line);
Serial.print(" / ");
if (strstr(line,datum) && strstr(line,cp))
{
Serial.print("**Datum vorhanden: ");
Serial.print(datum);
Serial.print(" / ");
Serial.print("**Code auch voranden: ");
Serial.print(line);
Serial.print(cp);
Serial.print("------Alles OK----- ");
gefunden = 1;
break;
}
if (strstr(line,datum) && !strstr(line,cp))
{
Serial.print(">> Nur Datum in Time.csv vorhanden: ");
Serial.print(line);
Serial.print(" / ");
Serial.print(datum);
}
if (!strstr(line,datum) && !strstr(line,cp))
{
Serial.print(">> Weder Datum noch code vorhanden: ");
Serial.print(line);
Serial.print(" / ");
Serial.print(datum);
}
i++;
if (i>=20) break;
Serial.print(" / Ende");
Serial.println();
}
daten.close();