Forum: PC-Programmierung Endlose schleife


von C beginner (Gast)


Lesenswert?

hi alle!
aus einer binären File will ich Daten auslesen.
for(;;)
{
fread(Daten1 lesen);//wenn ich hier break anwende dann kann ich die 
anderen     Daten nicht auslesen
fread(Daten2 lesen);usw..
}
printf(Daten1 ausgeben);//aber hier müssen die daten,die für den ersten 
Durchlauf waren gezeigt werden.
Ich hoffe dass meine frage deutlich ist.
mfg
r.To

von Thomas (Gast)


Lesenswert?

Respekt! Ohne Fragezeichen trotzdem eine Frage stellen zu wollen...

Ich persönlich sehe da zumindest keine Frage.

von C beginner (Gast)


Lesenswert?

ok sorry!
wie kann ich die letzte Ausgabe(printf) realisieren?
mfg

von M. V. (-_-)


Lesenswert?

Hmm, sag uns doch erstmal, was du eigentlich machen willst.
Ich denke nicht, dass alle hier Lust haben, nur mal so ins Blaue hinein 
zu raten.

Willst du jeweils die Daten auslesen, und dann ausgeben? Wieso setzt du 
dann nicht das printf direkt hinter das fread?

von Thomas (Gast)


Lesenswert?

Wahrscheinlich ist das printf nicht direkt hinter dem fread, damit er 
von den  Textausgaben nicht erschlagen wird. Dann ergibt sich jedoch die 
Frage, ob die Daten unbedingt in einer Endlosschleife ausgelesen werden 
müssen. Normalerweise programmiert man nach EVA (Eingabe - Verarbeitung 
- Ausgabe).

von Uwe B. (boerge) Benutzerseite


Lesenswert?

mal ne Frage, kannst du auch mal Klartext reden/schreiben...? Irgendwie 
lese ich nur wirres Zeugs!

von C beginner (Gast)


Lesenswert?

ok ich denke,dass die frage nicht deutlich war.Also die Daten müssen mit 
einer endlose schleife augelesen werden.im schleife(drin) hab ich ein 
bereich definiert fuer mein daten.Wenn das Bereich ueberschritten ist 
dann break.
Die erste fread(Daten 1-->lesen) will ich spaeter als parameter 
verwenden,wenn ich alle Daten aus meiner File gelesen haben.Die variable 
Daten 1 ist wie ein zeitstempel und fuer jeden for durchlauf krieg ich 
neuen wert fuer Daten 1.
Aber ich brauche bestimmt  den ersten Zeitstempelwert.
for(;;)
{
fread(&datastruct,sizeof(datastruct),1,fp);
if(datenberich ueberschritten)break;
fread(Daten 1);
fread(daten 2);
usw..
}
  y=Daten 1; //  hier will ich den wert vom Daten 1 was am anfang 
ausgelesen ist
ich hoffe,dass mein Problem deutlichen geworden ist.
mfg

von Uwe B. (boerge) Benutzerseite


Lesenswert?

1. du redest noch immer wirres Zeugs, aber ich meine zu verstehen, was 
du willst...

2. warum willst du in einer Endlosschleife soetwas machen. Besser ist 
eine while-Schleife, bei der dann eine sinnvolle Abbruchbedingung 
gesetzt ist.

3. dann merke dir die Daten aus dem 1. Read auf einer gesonderten 
Variablen und alle anderen Daten auf einer weiteren.

Grüße Uwe

von Stefan B. (stefan) Benutzerseite


Lesenswert?

yes_sir_habe_gelesen = 0;
for(;;)
{
  fread(Daten1 lesen);
  if (!yes_sir_habe_gelesen)
    printf(Daten1 ausgeben);
  yes_sir_habe_gelesen = 1;
  fread(Daten2 lesen);usw..
}

von Rolf Magnus (Gast)


Lesenswert?

> Also die Daten müssen mit einer endlose schleife augelesen werden.

Warum?

> im schleife(drin) hab ich ein bereich definiert fuer mein daten.Wenn
> das Bereich ueberschritten ist dann break.

Warum machst du nicht eine normale Schleife, die die Bedingung prüft 
statt einer "Endlosschleife", die irgendwo mittendrin rausspringt?

> Die erste fread(Daten 1-->lesen) will ich spaeter als parameter
> verwenden,wenn ich alle Daten aus meiner File gelesen haben.

In der Leseschleife?

> for(;;)
> {
> fread(&datastruct,sizeof(datastruct),1,fp);
> if(datenberich ueberschritten)break;
>fread(Daten 1);
>fread(daten 2);
> usw..
> }
>  y=Daten 1; //  hier will ich den wert vom Daten 1 was am
                  anfang ausgelesen ist

Warum schiebst du das if nicht an das Ende der Schleife?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.