Wortzähler C++ zählt immer ein Wort zu wenig. Wieso?

...komplette Frage anzeigen

3 Antworten

Endet die Datei mit einem abschließenden Zeilenumbruch oder direkt nach dem letzten Zeichen des letzten Wortes?

Eine Vorbereitung für ein optionales Ignorieren "leerer Wörter" / mehrerer Whitespaces hintereinander ist natürlich aufwendig, hat aber zum Nebeneffekt, dass die richtige Wortanzahl richtig berechnet wird (vorausgesetzt, man berücksichtigt den Beginn und das Ende der Datei richtig).

Vermutlich ist es nicht die effektivste Lösung, aber ich verwende in solchen Fällen gern eine boolesche Variable, die angibt, ob wir uns gerade in einem Wort befinden oder nicht. Die kann man dann am Ende der Datei noch mal auswerten.

Hast du dir schon Gedanken gemacht, was passiert, wenn der Speicherbereich des Arrays "gesamt" mit Zufallsbytes gefüllt ist und die Datei 0 Bytes groß ist?

Und bitte, bitte, bitte tu uns so was nicht an, in C ein String ohne Indexprüfung einlesen, so eine eklatante Einladung zum Buffer Overrun tut ja geradezu weh!

(Gewöhn dir von Anfang an an, auf so was zu achten, bis du beim Einrichten einer Einlese-Schleife eine solche Prüfung einbaust, ohne darüber nachzudenken. Das erspart viel überflüssigen Ärger mit einer der bescheuertsten Sicherheitslücke.)

Das sieht mir nach C und nicht nach C++ aus um ehrlich zu sein. Beispielsweise den char Array Abschluss mit \0 oder auch printf

Absolut unleserlich. Bring doch mal bitte den Quellcode ins ein lesbares Format. GF bietet auch eine Code Funktion neben den Zitaten

Was möchtest Du wissen?