Forum: PC-Programmierung While schleife bis einschließlich EOF


von Hupo (Gast)


Lesenswert?

Hi,

bin bei meinem Programm auf einen Fehler gestoßen, den ich irgendwie 
nicht ohne weitere Komplikationen beheben kann. Mein Programm soll einen 
String einlesen und die Wörter teilen.
1
while(*input)
2
{
3
 ...
4
}
Das heißt er bricht mir beim EOF sofort ab und springt raus. Das 
Programm muss jetzt aber bis einschließlich dem EOF laufen, dass er das 
letzte Wort auch noch übernimmt.

Bsp:
Eingelesene Text: "Dies ist ein Test"
Somit übernimmt er mir nur "Dies ist ein" ohne Test, da er mir ja schon 
vorher aus der Schleife springt.

Hoffentlich habe ich mir verständlich ausgedrückt.

von Karl H. (kbuchegg)


Lesenswert?

Hupo schrieb:

>
1
while(*input)
2
> {
3
>  ...
4
> }
>
> Das heißt er bricht mir beim EOF sofort ab und springt raus. Das
> Programm muss jetzt aber bis einschließlich dem EOF laufen, dass er das
> letzte Wort auch noch übernimmt.

Dann musst du das auch so programmieren, dass nach dem Schleifenabbruch 
noch Eingaben auf Verarbeitung warten.

  while( *input )
  {
    bearbeite *input
  }

  if (eof am input)
    bearbeite letzten noch nicht behandelten input

von Thomas D. (t0mmy)


Lesenswert?

Mal ohne die Rest zu hinterfragen kannst du genau das mit einer do {} 
while()-Schleife erreichen. Die geht einen Durchgang weiter als das 
while(){}.

von Frank M. (aktenasche)


Lesenswert?

ähhhhhh while(!fileptr.EOF()) ??!?!

von Klaus W. (mfgkw)


Lesenswert?

> Hoffentlich habe ich mir verständlich ausgedrückt.

nein.

Ich zumindest kann nicht sehen, was input ist und wo du liest.
Geschweige womit du liest und in welcher Sprache.

von Linguist (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Geschweige womit du liest und in welcher Sprache.
Solange das "while" eine While-Schleife einleitet, sollte die Sprache 
wohl ziemlich egal sein.

von Klaus W. (mfgkw)


Lesenswert?

Na dann gib doch mal eine sinnvolle Antwort, bitteschön ...

von Rolf Magnus (Gast)


Lesenswert?

Allerdings kommt in diesem Codeschnipsel in keiner mir bekannten Sprache 
etwas vor, das in irgendeiner Form was mit einem EOF zu tun hätte.

von Karl H. (kbuchegg)


Lesenswert?

Linguist schrieb:
> Klaus Wachtler schrieb:
>> Geschweige womit du liest und in welcher Sprache.
> Solange das "while" eine While-Schleife einleitet, sollte die Sprache
> wohl ziemlich egal sein.

Nicht ganz.
Unterschiedliche Sprachen haben unterschiedliche Auffassungen darüber, 
wann genau der EOF gemeldet wird.

In C wird EOF erst dann true, wenn ein Leseversuch gestartet und zur 
Gänze wegen EOF fehlgeschlagen ist. Daher ist eine Schleife, wie sie in 
PASCAL durchaus üblich ist

   while( !File.feof() ) {
     ....

in C leider meistens ein schwerer logischer Fehler.

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.
Lade...