Jennesta
Erfahrenes Mitglied
Hallo,
ich habe mir dein Programm einmal angesehen und bei mir ist es nichtmal soweit gelaufen. Ich vermute es liegt an dem undefinierten Verhalten, wie ComFreek bereits geschrieben hat.
Am besten initialisierst du alle Variablen vor der ersten Benutzung. Zahlen am besten mit 0 (auch wenn es der Compiler wahrscheinlich selbst macht ist es eine gute Angewohnheit). Und Alle Zeiger mit NULL.
Mit dem scanf habe ich dir ein Beispiel gemacht, wie du es verwenden kannst.
Eine weitere Sache ist noch dein Puffer. Du hast ihn auf 48 gelegt. Ich würde den an deiner Stelle größer wählen.
Auch wenn der Puffer für deine Zeilen bisher reichen wird, ist kein Platz für weitere Zeicehn vorhanden. Insbesondere bei generierten Dateien die evtl. durch andere Hände gehen, gehe immer davon aus, dass diese fehlerhaft sind. Es könnte aber auch sein, dass du anstelle von 55.83 den Wert 101.82 bekommst. Dann hast du ein Problem.
ich habe mir dein Programm einmal angesehen und bei mir ist es nichtmal soweit gelaufen. Ich vermute es liegt an dem undefinierten Verhalten, wie ComFreek bereits geschrieben hat.
Am besten initialisierst du alle Variablen vor der ersten Benutzung. Zahlen am besten mit 0 (auch wenn es der Compiler wahrscheinlich selbst macht ist es eine gute Angewohnheit). Und Alle Zeiger mit NULL.
Mit dem scanf habe ich dir ein Beispiel gemacht, wie du es verwenden kannst.
C:
if(fp == NULL) {
printf("Fehler beim oefffnen");
} else {
while(6 == fscanf(fp, "%s %s %s %f %f %f\n", Datum, Uhrzeit, Adresse, &Druck, &Strom, &Leistung)) {
printf("%s, %s, %s, %f, %f, %f\n", Datum, Uhrzeit, Adresse, Druck, Strom, Leistung);
// Auswertung
}
}
Eine weitere Sache ist noch dein Puffer. Du hast ihn auf 48 gelegt. Ich würde den an deiner Stelle größer wählen.
Auch wenn der Puffer für deine Zeilen bisher reichen wird, ist kein Platz für weitere Zeicehn vorhanden. Insbesondere bei generierten Dateien die evtl. durch andere Hände gehen, gehe immer davon aus, dass diese fehlerhaft sind. Es könnte aber auch sein, dass du anstelle von 55.83 den Wert 101.82 bekommst. Dann hast du ein Problem.