Hallo,
Am übersichtlichsten wird dein Programm, wenn du die Daten zeilenweise verarbeitest und das erste Zeichen und die Zahl immer gleich zusammen einliest. Anstelle der vielen "if" ist eine "switch ... case" struktur zweckmäßiger. Außerdem hat deine Beispieldatei Kommas als Dezimaltrenner. Dem musst du mit der setLocale - Funktion Rechnung tragen, da fscanf sonst Punkte rwartet.
Gruß
MCoder
Hier liest du nur das eine Zeichen am Zeilenanfang aus. Alles in eine Variable geht sowieso nicht, weil fscanf für jeden Datentyp in der Datei sowie alle Füll- und Leerzeichen und Zeilenumbrüche einen entsprechenden Eintrag im Formatstring benötigt.Hier lese ich alles was im vorgegebenen Textdokument steht raus und speichere in einen Character a oder? Ich glaub das stimmt nicht, weil ein Character ist ja nur 1 Buchstabe?
Das erreicht man mit einem Leerzeichen vor dem vor "%c" im Formatstring. Zugegeben, etwas trickyWarum geht das fscanf nicht weiter hinunter in die nächste Zeile?
Am übersichtlichsten wird dein Programm, wenn du die Daten zeilenweise verarbeitest und das erste Zeichen und die Zahl immer gleich zusammen einliest. Anstelle der vielen "if" ist eine "switch ... case" struktur zweckmäßiger. Außerdem hat deine Beispieldatei Kommas als Dezimaltrenner. Dem musst du mit der setLocale - Funktion Rechnung tragen, da fscanf sonst Punkte rwartet.
C++:
setlocale(LC_ALL, "");
FILE *f = fopen("rlc.txt", "r");
if( f )
{
char c;
double d;
while( fscanf(f, " %c %lf", &c, &d) > 0 )
{
switch( c )
{
case 'f':
// ... TODO
break;
case 'r':
// ... TODO
break;
case 'c':
// ... TODO
break;
case 'l':
// ... TODO
break;
}
}
fclose(f);
}
MCoder