File Input/Output

Hallo,

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?
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.

Warum geht das fscanf nicht weiter hinunter in die nächste Zeile?
Das erreicht man mit einem Leerzeichen vor dem vor "%c" im Formatstring. Zugegeben, etwas tricky :)

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);
}
Gruß
MCoder
 
Zurück