fstream, Öffnen und Lesen einer Datei
-
Hallo!

Ich habe ein Beispielprogramm, das Daten aus einer Datei liest. Hier ein Teil des Codes:if (0 < strlen(InputFile)) { pInputfile.open(InputFile, ios::in); if(!pInputfile) { InputFile[strlen(InputFile) -1] = 0x00; pInputfile.open(InputFile, ios::in); if(!pInputfile) { ...weiter mit Fehlerbehandlungwobei folgende Deklarationen gelten:
char InputFile[255];
fstream pInputfile;Wozu wird nach einem ersten Scheitern des Öffnens des InputFiles das Öffnen ein zweites mal probiert, nur dass diesmal das InputFile mit
InputFile[strlen(InputFile) -1] = 0x00;
verändert worden ist? Was soll das denn bitte bringen, die letzte Stelle des InputFiles mit 0x00 zu besetzen??
Liebe Grüße,
Julia
-
Sagen wir du hast einen char-Array der Länge 5. Wenn du da jetzt "Horst" reinschreibst, fehlt an der 5. Stelle (array[4]) die abschließende 0. Das führt dazu das beim Auslesen des C-Strings fröhlich über das Array hinausgelesen wird, bis eine 0 im Speicher auftaucht. Ein ziemliches Problem. Was der Code macht ist im Fehlerfall eben ans Ende eine 0 schreiben, so das dort dann "Hors\0" stehen würde. Wäre nicht mehr die gleiche Eingabe aber er versucht es einfach mal.
Im Grunde total unsinnig. Wenn man schon auf Nummer sicher gehen will (was man auch sollte) sollte man gleich ans Ende eine 0 schreiben oder dafür sorgen das nur (in diesem Fall) 4 Zeichen reingeschrieben werden in den C-String.
-
oh ja, jetzt klingelt's laut und deutlich: strings werden in einem Array mit einer '0' abgeschlossen.
Deshalb der ganze Aufwand...
Ganz ganz dickes Dankeschön!!

Schönen Tag noch,
Julia