mehrere Kopien einer Datei
-
Hi,
ich habe ein Programm geschrieben, das eine Textdatei (Quelle.txt) kopiert (in Ziel.txt). Mein Problem ist nun, dass ich diese Datei gerne oefters kopiert haben moechte, er aber bei meinem Quellcode alles immer wieder in "Ziel.txt" schreibt und letztenendes nur eine Kopie gemacht hat.
Wie waere es moeglich, dass ich den Ausgabenamen bei jedem Durchgang der while-Schleife automatisch aendere, zum Beispiel "Ziel0.txt", dann "Ziel1.txt", dann "Ziel2.txt" ... "Ziel20.txt"?while(int i=1 <= 30) { ifstream quelle; ofstream ziel; quelle.open("Quelle.txt", ios::nocreate); ziel.open("Ziel.txt", ios::in|ios::binary); while(quelle.get(data)) { ziel.put(data); } }
weiss nicht, ob es wichtig ist:
w32; Borland C++ 5.01Danke fuer jede Antwort
-
so mal ganz ausführlich...
int i = 1; //laufzahl stringstream sstr; string number; string ext=".txt"; //dateiendung sstr<<i; //für umwandlung in text string str = "hallo"; sstr>>number; //zahl aus stream holen(als string) str+=number; //nummer anhängen str+=ext; //dateiendung anhängen fstream test(str.c_str(),ios::out); test<<"hallo"; //was in datei schrieben
du musst nur eben eine schleife nehmen, und eben das i immer erhöhrn...sonst ändert sich dateiname nich
und du kannst nich test<<"hallo" machen, weil du ja binär arbeitest!
-
aah.. haa... hm -.-*
Muss ich mir nochmal ein bisschen angucken, danke!!
-
wenn du was net verstehst, frag einfach!
-
hm, diese Art etwas in eine Datei zu speichern ist fuer mich neu. Ich dachte mir koennte jemand eine Loesung wie
while(int i=1 <= 30) { char Datei[3]="Ziel"; ifstream quelle; ofstream ziel; quelle.open("Quelle.txt", ios::nocreate); ziel.open(Datei+i, ios::in|ios::binary); while(quelle.get(data)) { ziel.put(data); } }
liefern (was leider nicht funktioniert).
Geht es denn auf einer Art, die meiner aehnelt, oder muss ich jetzt das neue da lernen, ich will das ja schliesslich selber kapieren und nicht einfach ein Stueck Quellcode aus dem Internet kopieren, aus dem ich nichts erkennen kann..Ich bin nicht so gut in C++, trotz Erklaerung verstehe ich nicht, was da steht.
-
hm...also erstmal dein while.....
//nicht while(i=1<=30) //das geht so nicht! //wenn dann int i=1; while(i<=30) { i++; }
weiter...
char Datei[3]="Ziel" //du reservierst zu wenig speicher, nämlich nur für 3 //zeichen, du benutzt aber 5 also char Datei[10] //damit immer noch etwas reserve ist
auch das dürfte nicht gehen
ziel.open(Datei+i, ios::in|ios::binary); //denn erstens kann man chars nicht einfach so anhängen, und 2tens //würde es ja dann "Ziel1" heißen, ohne Endung etc (wenn es gehen würde) //darum nimmt man String string Datei="Ziel"; //und mit += kannst weitere strings anhängen string endung=".txt"; Datei+=endung; //das ergibt "Ziel.txt"
und das is noch nich alles, an deiner stelle würd ich mich erstmal an einfachere sachen wagen
-
ah.. jetzt hab ich's verstanden, weiss auch wie ich es jetzt mache, danke
Mann muss immer einen Schritt weiter gehen und die Fehler mit der while-Schleife habe ich ja gar nicht in meinem Quelltext, die habe ich eben hier nur hingekrickelt
Ich dachte "char Date[3]" koennte doch 4 Buchstaben speichern (Buchstabe 0, 1, 2 und 3).. aber so habe ich es ja sowieso nicht
danke nochmal, super Board
-
kein problem, lass aber mal deine lösung sehen...hast wirklich alles verstanden?
Übrigens:
char Ziel[3] bedeutet platz für 3 zeichen, nämlich Ziel[0]-Ziel[2]
Und "Ziel" sind 5 zeichen weil:
Z - i -e - l - /o <-damit wird char kette abgeschlossen!IMMER....also merken
1 -2 -3 -4 -5