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 gibtfread()
eine1
zurück, die Schleife läuft weiter. Irgendwann ist die Datei zuende,fread()
gibt0
zurück, die Bedingung0 == 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 Datensatzes0
,1
oder2
ist, liest du im Schleiferkörper eben den ersten beizaehler == 0
, den zweiten beizaehler == 1
und den dritten beizaehler == 2
beim der nächsten Prüfung der Abbruchbedingung istzaehler == 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 um1
erhöhen. Klar soweit?
Wie's mit einerfor
-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
bisn
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 derwhile
-Schleife raus (while
-Schleife entsorgen!),
Dasprintf()
aus dem Schleifenkörper derfor
-Schleife raus,
Denfread()
-Aufruf in den Schleifenkörper derfor
-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