File I/O(fscanf,....)



  • Das hat bei dir mit for und while nichts zu tun.

    Im 1. Programm nutzt du eine Datei als Zwischenspeicher.
    Das ist gut, wenn man die Daten nach dem Programmlauf noch braucht.

    Im 2. Programm speicherst du die Daten in einem Array zwischen.
    Die sind beim Programmende weg.

    while und for kann man ohne Probleme gegeneinander austauschen.

    for wird meist für Schleifen benutzt, wo die Anzahl der Durchläufe vorher feststeht.
    while nimmt man, wenn die Abbruchbedingung in der Schleife ermittelt wird.

    Du weißt wie viel Einträge dein Array hat -> for
    Du weißt nicht wie viel Zeile die Datei hat -> while

    Das ist aber nicht zwingend.



  • Wutz schrieb:

    Gast007 schrieb:

    Alleine schon das "r" das ich oben beschrieben hab lest ja schon Zeilen in Seiten.csv oder?

    Ägypten?

    Wo liest du denn nach

    seiten = fopen("seiten.csv","r");
    

    irgendwas aus der Datei?
    fopen macht fopen und keinerlei Leseaktion.

    Ich dachte wenn man seiten zum lesen öffnet also: seiten=fopen(".......","r"), dann "lest" "irgendwer" (der Compiler?!) die Seiten durch und wenn ich dann gleichzeitig
    flaeche = fopen("........","w") öffne dann kann man ja sagen das beide Zettel nebeneinander liegen. Man liest "r" von seiten.csv die zahlen und "schreibt" "w" sie dann in flaeche.csv.

    Stimmt das?

    Was ist nun der Unterschied zwischen fscanf und eine file zum lesen öffne("r")?

    Wie man in den 2 Programm gesehn hat ist der Aufbau mit dem "w" und "r" ja gleich und es geht auch ohne fscanf.



  • Gast007 schrieb:

    Ich dachte wenn man seiten zum lesen öffnet also: seiten=fopen(".......","r"), dann "lest" "irgendwer" (der Compiler?!) die Seiten durch und wenn ich dann gleichzeitig
    flaeche = fopen("........","w") öffne dann kann man ja sagen das beide Zettel nebeneinander liegen. Man liest "r" von seiten.csv die zahlen und "schreibt" "w" sie dann in flaeche.csv.

    Nein, mit fopen() sagst du dem Rechner nur, daß du gerne diese Datei lesen bzw. schreiben willst. Das Lesen/Schreiben mußt du dann selber erledigen, wenn du es benötigst (es gibt noch andere Lese-Funktionen als fscanf(), von den Möglichkeiten unterschiedlicher Format-Strings und Zielvariablen gar nicht zu sprechen.

    Um mal bei deiner Analogie mit den Zetteln zu bleiben: mit fopen() holst du einen Zettel aus dem Aktenordner, mit fscanf() nimmst du diesen Zettel und schaust dir seinen Ihnalt an.

    Wie man in den 2 Programm gesehn hat ist der Aufbau mit dem "w" und "r" ja gleich und es geht auch ohne fscanf.

    Das funktioniert auch nur, weil du die Daten weiter oben in einem Array untergebracht hast und weiter genutzt hast (d.h. du hast die Zahlen nicht vergessen, sondern erinnerst dich noch daran, wie du sie geschrieben hast - also brauchst du nicht auf deinen Zettel gucken).



  • Sich die Sache so einfach wie möglich zu machen ist oft gut nur man darf da aber nichts vernachlässigen.

    Was ist denn das Aufgabenziel?

    Soll eine "seiten.csv" erstellt werden z.B. zur Dokumentation?
    Wenn nein, das haben die Schreiber vor mir allerdings schon geschrieben, kannst du dir das Dateien-Handling sparen.

    Soll zu Übungszwecken eine "seiten.csv" erstellt werden, dann teile dein Programm:
    erst schreibst du ein Programm welches nur die "seiten.csv" erstellt. Wenn das zuverlässig läuft, schreibst du eines welches die "seiten.csv" nur liest und die Daten dann weiter verarbeitet. An diesen beiden Programmen kannst du dann das testen mit dem weglassen und so. Dies damit du weisst wieso der Quelltext den Weg in dieser Form zu dir gefunden hat 🤡

    MfG f.-th.



  • f.-th. schrieb:

    Was ist denn das Aufgabenziel?

    Also die Aufgabenstellung ist: 1 File(seiten.csv) erstellen wo nur die Seiten also a und b gespeichert werden und 1 File(flaeche.csv) wo nur die Flächen gespeichert werden.

    PS: Fällt euch zufällig ein paar gleichgewichtige Aufgabenstellungen ein?



  • Danke an alle. Habt mir sehr geholfen 🙂

    Ahja kann es sein das fscanf nur aus jener Datei was ausliest wo der Lese-Modus benutz wird also w+, a+, r...?

    z.B: seiten = fopen(".......","r"). r kann man halt durch w+, a+... ersetzen.



  • Kann man das so sagen :D?



  • Gast007 schrieb:

    Ahja kann es sein das fscanf nur aus jener Datei was ausliest wo der Lese-Modus benutz wird also w+, a+, r...?

    Lass dir diesen Satz noch mal auf der Zunge zergehen.
    Fällt dir etwas auf?



  • Das "r" es lest und fscanf das aus derjenigen Datei liest?



  • Das "r" bei fopen steht für read
    Damit du Daten aus einer Datei lesen kannst, musst du sie so öffnen, dass du lesen kannst. Und das macht bei fopen "r" bzw. die Parameter mit + dabei.

    fopen ändert nur etwas an der Datei im Modus "w". Es setzt die Dateilänge auf 0.


Anmelden zum Antworten