Einfache Textdatei in eine Liste einlesen

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Einfache Textdatei in eine Liste einlesen

Beitrag von Xin » Di Jan 29, 2013 6:24 pm

forumnewbie hat geschrieben:Das Programm liest alle Daten ein, aber:
Wie du geschrieben hast, ist der erste Integer-Wert falsch. Die anderen stimmen. Und der letzte Datensatz wird doppelt ausgegeben. :shock: Also die komplette Datei wird eingelesen, aber mit 2 Fehlern.
Schön, dann verstehe ich das Programm ja richtig und das Programm ist falsch. :-)
forumnewbie hat geschrieben: Was muss in der While-Schleife stehen, damit es richtig funktioniert - damit Zeile für Zeile eingelesen wird? Bzw. wie muss man das Beispiel aus dem Tutorial erweitern, damit dort nicht nur eine Zeile eingelesen wird?
Schau Dir erstmal fgets() an. Das Ganze kannst Du kombinieren mit atoi() und den String hast Du dann sowieso schon, Du musst nur den Anfang des Strings finden und das kannst Du ja schon.

Damit kannst Du eine brauchbare Fehlerbehandlung machen.
forumnewbie hat geschrieben: PS: Hab's hinbekommen:

Code: Alles auswählen

while(fscanf(fileP, "%i", &i) != EOF)
Darf man das so machen? Es funktioniert dieses Mal richtig. Falls das keine gute Lösung ist, könnte mir jemand eine bessere zeigen?
Wenn Du das Deinem Prof verkauft bekommst... mir bekommst Du nix verkauft, was scanf enthält.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

forumnewbie
Beiträge: 80
Registriert: Di Jan 15, 2013 9:02 pm

Re: Einfache Textdatei in eine Liste einlesen

Beitrag von forumnewbie » Di Jan 29, 2013 6:34 pm

Ich habe auf der ersten Seite ganz unten bereits die "saubere" Lösung gepostet:

Code: Alles auswählen

        while(fscanf(fileP, "%i %s", &i, string) != EOF)
        {
            printf( "String gelesen: %s: ", string );
            printf( "Integer gelesen: %d\n", i );
        }
Wir haben nur fscanf() mit fopen() und fclose() ganz kurz behandelt und sollten alle Aufgaben NUR mit den Mitteln machen, die wir in den Vorlesungen behandelt haben. :shock: Aber für die Prüfung wird das Thema wohl nicht relevant sein. Die Prüfung wird wahrscheinlich nur aus mathematischen Aufgaben und Algorithmen bestehen: z.B.: Welches Ergebnis liefert diese rekursive Funktion f(), oder: schreiben Sie eine Funktion f() die irgendwas berechnet.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Einfache Textdatei in eine Liste einlesen

Beitrag von Xin » Di Jan 29, 2013 6:55 pm

forumnewbie hat geschrieben:Ich habe auf der ersten Seite ganz unten bereits die "saubere" Lösung gepostet:
Die Lösung ist nicht sauber. Die Lösung funktioniert nur, falls Du passende Daten reinwirfst.
forumnewbie hat geschrieben:Wir haben nur fscanf() mit fopen() und fclose() ganz kurz behandelt und sollten alle Aufgaben NUR mit den Mitteln machen, die wir in den Vorlesungen behandelt haben. :shock:
Tu Dir selbst einen Gefallen und lass Dein Denken nicht begrenzen. Vor allem nicht mit Schwachsinn, wie die Aussage, dass Du eine gefährliche Funktion nehmen sollst und Dir sinnvolle Alternativen verboten sind. Wenn das die saubere Lösung ist, gib das doch ab... aber schreib es für Dich in einer sinnvollen Variante.
forumnewbie hat geschrieben:Aber für die Prüfung wird das Thema wohl nicht relevant sein. Die Prüfung wird wahrscheinlich nur aus mathematischen Aufgaben und Algorithmen bestehen: z.B.: Welches Ergebnis liefert diese rekursive Funktion f(), oder: schreiben Sie eine Funktion f() die irgendwas berechnet.
Mach Dir klar, dass die Prüfungen nach dem Studium auch nicht mehr relevant sind. Du lernst für die Prüfungen im Studium - schon klar. Aber lerne auch für die Prüfungen nach dem Studium.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten