While Schleife



  • Doch nicht so einfach wie ich dachte.
    Ich habe leider keine Ahnung wie man diesen Zähler einbaut.

    Diese eine "dumme" Frage nur noch und dann bin ich der Glücklichste Mensch auf dieser Welt. 🙂

    Könntest du mir vielleicht ein Beispiel nennen, wie sowas aussehen sollte?





  • Danke aber das war das erste was ich versucht habe und bei:

    while (fread(&adr, sizeof(adr),1, devisen) == 1)
    {
    for(a=0;a<=1;a++)
    {

    z.b. Gibt er mir die ganzen blöcke einfach doppelt heraus.

    Also 1-7 und dann wieder 1-7.

    Genau da ist ja der knackpunkt, weshalb ich hier im Forum Hilfe suche. 🙂



  • Von einer weiteren Schleife hat Wutz nichts geschrieben.

    Fürs mitzählen reicht a aus ( wobei a dafür kein guter Variablenname ist)

    Zum vorzeitigem Verlassen einer Schleife dient break;



  • Der Versuch mit der For-Schleife war auf den Post von Swordfish bezogen.

    Ich verstehe einfach nicht wie ich an die richtige Stelle komme. Egal was ich ausprobiere, jedes mal läuft das Programm die ganzen "blöcke" durch.



  • Deine while -Schleife liest so lange, solange immer wieder ganze Datensätze gelesen werden können. Solange die "Abbruchbedingung" erfüllt ist ( fread( ... ) == 1 ), aso ein vollständiger Datensatz gelesen werden kann gibt fread() eine 1 zurück, die Schleife läuft weiter. Irgendwann ist die Datei zuende, fread() gibt 0 zurück, die Bedingung 0 == 1 ist nicht mehr erfüllt und die Schleife bricht ab.

    Um nur bis zum inklusive dritten Datensatz zu lesen brauchst du also eine andere Bedingung:
    solange die Zahl des als nächstes zu lesenden Datensatzes 0 , 1 oder 2 ist, liest du im Schleiferkörper eben den ersten bei zaehler == 0 , den zweiten bei zaehler == 1 und den dritten bei zaehler == 2 beim der nächsten Prüfung der Abbruchbedingung ist zaehler == 3 . Also könnte die Bedingung wie lauten?

    Aja. Wenn du bei einer while -Schleife bleibst, dann musst du den Zähler natürlich im Schleifenkörper bei jedem Durchlauf um 1 erhöhen. Klar soweit?
    Wie's mit einer for -Schleife geht, steht im oben genannten howto.



  • Ok, danke erstmal, für die geopferte Zeit.

    Dein Tipp ist absolut super und genau das war auch mein aller erster ansatz. Leider finde ich aber nichts über das auslesen von binärdateien im zusammenhang mit einer for schleife. Also ich habe wirklich keine ahnung wie ich dass in eine for schleife einbinden kann. 😕



  • Schreib' mal ein Programm, daß Zahlen von i = 0 bis n auf dem Bildschirm ausgibt ...



  • for (i=0 ; i<=n ; i++)
    {
    printf("%i",i);
    }

    Das ist ja alles wirklich kein Problem aber das fread da jetzt reinzukriegen...

    Ich glaube ich stehe echt aufm Schlauch



  • Thomass86 schrieb:

    Ich glaube ich stehe echt aufm Schlauch

    Elephant aus dem Zoo raus (Eintrittskarte entsorgen!),
    Kühlschranktüre auf und Giraffe aus dem Kühlschrank raus,
    Elephant in den Kühlschrank rein, Kühlschranktür zu.

    ➡

    Den fread() -Aufruf aus der Bedingung der while -Schleife raus ( while -Schleife entsorgen!),
    Das printf() aus dem Schleifenkörper der for -Schleife raus,
    Den fread() -Aufruf in den Schleifenkörper der for -Schleife rein.



  • Vielen vielen Dank, funktioniert wunderbar und so easy wie dieser weg auch aussieht, ich wäre niemals drauf gekommen.
    Hab mir nicht mal vorstellen können, dass man die Zeile einfach so mit reinschreiben kann, ohne die for schleife oder ähnliches.

    Nochmals, vielen dank. 🙂

    Freundliche Grüße


Anmelden zum Antworten