Dateibearbeitung
-
Du kannst ne Datei für beide Richtungen, Lesen und Schreiben, öffnen.
Mit fstream.
-
Also erstmal kannst du die Datei für beide Richtungen öffnen, bzw. erstellen.
Dann schreibst du deine Zahlen rein.
Dann kannst du den Dateizeiger an den Anfang mit seekp setzen und den Inhalt ausgeben, usw.
-
Danke..soweit bin ich bisher dann
#include<iostream> #include<fstream> #include<string> using namespace std; char puffer[63]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,'\x20','\x20',1}; int main(){ fstream schreiben; schreiben.open("chwrite.asc", ios::out | ios::in); for(int k=0;k<63;++k) { schreiben<<puffer[k]; } schreiben.seekp(0); return 0; }Wie kann ich jetzt den Inhalt von schreiben ausgeben? Ist das von oben richtig?
-
also hab die daten mal selber geschrieben...realisierung der schleife ist vorerst nicht so wichtig
-
Also bei meinem Code von oben tut sich bei mir gar nichts...der compiler ist zufrieden, aber wenn ich die datei ausführen lasse, dann zeigt er nichts an und meine datei wurde auch nicht angelegt??
Wie kann ich die Daten von schreiben ohne zwischenspeichern auf de Bildschirm ausgeben?
Vielen Dank für die Hilfe!
-
Für das Anlegen einer in/out Datei muss zusätzlich noch ios::trunc benutzt werden:
schreiben.open("chwrite.asc", ios::out | ios::in | ios::trunc);Falls die Datei schon existiert, wird sie dann allerdings (wegen truncate) leer gemacht.
Überdenke auch nochmal dein char array.
Tipp: 1 + '1' ergibt 50.
Bedenke in dem Zusammenhang auch, dass man char arrays direkt mit string-literalen initialisieren kann. Erwähne außerdem die Benutzung von std::string.
-
Sorry, ich meinte natürlich nicht
seek0r schrieb:
Erwähne außerdem die Benutzung von std::string.
, sondern:
Erwäge außerdem die Benutzung von std::string.
Deutsch ist auch keine leichte Sprache
Den Lesezeiger setzt man übrigens mit seekg. (g wegen get)
-
Vor allem brauchst du das Array gar nicht...
Denn dass sind 6 mal die Zahlen von 1,2,3,...,0 => Schleife + modulo Operator würde auch gehen. und die Zeilennummer machst du auch mit ner Schleife
for(int l = 1; l <= 5; l++) { for(int i = 1; i <= 60; i++) schreiben << i % 10; schreiben << " " << l << endl; }
-
Vielen Dank mal bisher..das Programm funktioniert bis zu dem Teil an dem ich überschreiben soll einwandfrei, aber mein Programm überschreibt die Datei nicht richtig bzw. fängt auch nicht beim richtigen Zeichen an. Warum? Kann mir jemand helfen??
cout << "\nAb dem wievielten Zeichen soll etwas veraendert werden : "; int n; cin >> n; cout << "\nWieviele Zeichen sollen veraendert werden : "; int m; cin >> m; cout<<"\n"; schreiben.seekg(n); for(int k=0;k<m;k++) { schreiben<<'*'; }Das ist der Teil wie ich ihn geschrieben habe, aber leider funktioniert er nicht...
-
Du benutzt seekg (= seek GET)
du solltest aber seekp (= seek PUT) benutzen
emm kann es sein, das ihr das macht, wass in dem Buch Grundkurs-Software entwicklung mit C++ von Dietrich May steht?
lg
BlackMaster_