Hallo Leute,
Ich habe ein Problem beim Einlesen einer Textdatei, die folgendermaßen aussieht:
0;100;0;0;
0.9;100;0;600;Oranienburg
2.5;100;0;0;Abzweig_Lehnitz
2.8;120;0;0;
5.8;120;0;0;Bk_Borgsdorf
Mein gegenwärtiger Programmcode sieht so aus:
Die dazugehörige Ausgabe sieht so aus:
Input: 0.0000
Input: 100.000
Input: 0.0000
Input: 0.0000
Input: 0.9;100;0;600;Oranienburg
Input: 2.50000
Input: 100.000
Input: 0.00000
Input: 0.00000
Input: Abzweig_Lehnitz
Input: 2.80000
Input: 100.000
Input: 0.00000
Input: 0.00000
Input: 5.8;120;0;0;Bk_Borgsdorf
Mein Problem liegt nun darin, dass an einigen Stellen der Textdatei an letzter Stelle manchmal ein Ort steht und manchmal nicht, an den Stellen wo keiner steht, wird bei dem Input.Ort die gesamte nächste Zeile eingelesen. Meine Frage nun, wie kann ich das verhindern? An der Textdatei selbst kann ich leider nichts ändern die ist so festgeschrieben. Ich wäre wirklich dankbar für Hilfe und Ratschläge.
Grüße Rex
Ich habe ein Problem beim Einlesen einer Textdatei, die folgendermaßen aussieht:
0;100;0;0;
0.9;100;0;600;Oranienburg
2.5;100;0;0;Abzweig_Lehnitz
2.8;120;0;0;
5.8;120;0;0;Bk_Borgsdorf
Mein gegenwärtiger Programmcode sieht so aus:
C++:
#include <stdio.h>
#include <stdlib.h>
struct Datensatz{
float Kilometer;
float Geschwindigkeit;
float Neigung;
float Wartezeit;
char Ort[20] ;
};
int main(int argc, char *argv[]) {
struct Datensatz Input[100];
FILE *Textdatei;
int i,gefunden;
char name[20];
gefunden=0;
while (gefunden==0){
printf("Welche Datei wollen Sie zum Lesen öffnen: ");
scanf("%s",name);
Textdatei=fopen(name,"r");
if (Textdatei==NULL){
printf("Datei konnte nicht geladen werden.\n");
}
else
{
gefunden=1;
}
}
i=0;
while((fscanf(Textdatei,"%f;%f;%f;%f;%s\n", &Input[i].Kilometer,&Input[i].Geschwindigkeit,&Input[i].Neigung,&Input[i].Wartezeit,Input[i].Ort))!=EOF)
{
printf("Input: %f\n", Input[i].Kilometer);
printf("Input: %f\n", Input[i].Geschwindigkeit);
printf("Input: %f\n", Input[i].Wartezeit);
printf("Input: %f\n", Input[i].Neigung);
printf("Input: %s\n", Input[i].Ort);
i++;
}
fclose(Textdatei);
return 0;
}
Die dazugehörige Ausgabe sieht so aus:
Input: 0.0000
Input: 100.000
Input: 0.0000
Input: 0.0000
Input: 0.9;100;0;600;Oranienburg
Input: 2.50000
Input: 100.000
Input: 0.00000
Input: 0.00000
Input: Abzweig_Lehnitz
Input: 2.80000
Input: 100.000
Input: 0.00000
Input: 0.00000
Input: 5.8;120;0;0;Bk_Borgsdorf
Mein Problem liegt nun darin, dass an einigen Stellen der Textdatei an letzter Stelle manchmal ein Ort steht und manchmal nicht, an den Stellen wo keiner steht, wird bei dem Input.Ort die gesamte nächste Zeile eingelesen. Meine Frage nun, wie kann ich das verhindern? An der Textdatei selbst kann ich leider nichts ändern die ist so festgeschrieben. Ich wäre wirklich dankbar für Hilfe und Ratschläge.
Grüße Rex