read()..
-
Durch eine '\0' abgeschlossen. "hallo" z.B. sind eigentlich 6 Zeichen. h bis o und ein \0. Wenn du das ausgibst, stoppt die Ausgabe bei der \0. Dein red enthält aber nur 5 Zeichen, die \0 fehlt. Also wird solange ausgegeben, bis im Speicher zufällig ein \0 kommt.
-
string hat ja auch 5 string[5] von 0 bis 4 kann man chars speichern also das hallo und im 5 ist dann NULL,
bei red ist es doch auch so, beim 5 ist dann das "\0".
Also kann es doch nicht daran liegen oder?
-
ß.ß schrieb:
string hat ja auch 5 string[5] von 0 bis 4
von 0 bis 4 sinds schon 5 elemente.
string hat aber 6 wegen "hallo\0"
'\0' definiert das ende des stringsred[5] hat nur 5 elemente und da passt das '\0' nicht mehr rein.
also
char red[6];
und
ausg.read(red,5); red[5] = 0;
mfg higret
-
axo ^^'
-
noch was, wie kann ich die datei öffnen ohne sie immer zu überschreiben?
-
hi
mit ios::app wie append (anhängen)
für weitere fragen empfehle ich
http://www.cppreference.com/mfg higret
-
Wie kann man abfragen ob eien datei bereits exestiert, ich finder überall nur:
ifstream inputStream("file.txt"); if( !inputStream ) { cerr << "Error opening input stream" << endl; return; }
Dies ist aber ein ziemlicher schwachsinn, da zuerst die Datei file.txt erzeugt wird und dan abgefragt wird ob es die schon gibt : \
-
bei ifstream wird keine datei erzeugt, aber das versagen des öffnens kann auch damit zutun haben, dass man keine rechte zum lesen der datei hat.
-
nein die rechte hat es es shcon, allerdings funktioniert die abfrage nicht..
-
Auf die Gefahr hin, dass ich jetzt verbrannt und geköpft werde (
), du kannst mal schauen ob deine STL-Implementierung das Flag ios::Nocreate, oder ein ähnliches mit der gleichen Funktion besitzt, damit verhinderst du, dass eine neue Datei erzeugt wird.