While schleife bis einschließlich EOF

Gast #2430450
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.
#2430466
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
#2430824
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren