Datei-Zugriff: Wahlfreier Zugriff (Spezielle Problemstellungen)

Ermittlung der Anzahl der Bytes einer Datei (3/5)

Schauen wir uns das Programm also etwas genauer an:
Zu Beginn wird mit

  fstream datei( "tucholsk.txt", ios::in | ios::app );

die Datei "tuchols.txt" zum Lesen (ios::in) und gleichzeitig zum Anhängen von Daten an die Datei (ios::app) geöffnet.
Und gerade bei letzterem findet sich auch unser Fehler: wird eine Datei zum Anhängen geöffnet, so wird ans Dateiende positioniert! Und damit wird unser Versuch des Einlesen eines Characters natürlich nicht mehr glücken, da wir uns ja bereits am Dateiende befinden.
Ziel muß es daher sein, an den Dateianfang zu positionieren.
Dies gelingt durch ein Einfügen der Zeile

  datei.seekg( 0, ios::beg );

unmittelbar vor die while-Schleife. Damit wird, relativ zum Dateianfang, an die Stelle 0 positioniert, d.h. genau an den Dateianfang.

Lassen wir das leicht modifizierte Programm laufen, so erhalten wir als Ausgabe

  Ankunft
  Gesamtanzahl Bytes in der Datei: [8]

d.h. es wurde nur die erste Zeile unseres Textes eingelesen.