programm zum kopieren
-
Hi!
Ich soll übungshalber ein Programm erstellen, welches mir ermöglicht mit C++ Dateien an einen anderen Ort zu kopieren...
Da ich mich erst seit kurzem mit C++ beschäftige, habe ich keinen blassen Schimmer, wie ich das bewerkstelligen kann

Ist es möglich diese Aufgabe mit ifstream bzw ofstream zu lösen?
Könnt ihr mir vielleicht beim erstellen des Quellcodes helfen?
-
Vlast schrieb:
Ist es möglich diese Aufgabe mit ifstream bzw ofstream zu lösen?
Ja, ist möglich.
Könnt ihr mir vielleicht beim erstellen des Quellcodes helfen?
Helfen ja, komplett schreiben, nein. Was hast du denn schon?
-
Bis etz hab ich des:
Hab allerdings keine Ahnung, in wie weit des richtig is!!#include<iostream>
#include <fstream>
#include <string.h>
#include <dir.h>
using namespace std;char cPfad[80];
char cDatei[80];
char cVerz[80];
char cPfad2[80];
char cVerz2[80];
void main(void)
{
cout << "Geben Sie den Verzeichnisort der Datei an die Kopiert werden soll\n"
<< "und zwar in dieser Form: \"c:/Verzeichnisort\/\"\n";
cin >> cPfad;
cout << "\nGeben Sie nun noch den Dateinamen und den Dateityp in folgender Form ein:\n"
<< "\"Dateiname.Dateityp\"\n\n";
cin >> cDatei;
strcat(cVerz,cPfad);
strcat(cVerz,cDatei);
ifstream iFile(cVerz);if (! iFile)
{
cout << "\nFehler beim oeffnen der Datei\n"
<< "Ueberpruefen Sie die Pfadangabe auf Rechtschreibfehler "
<< "und stellen Sie sicher, dass die Datei existiert\n"
<< "Drueken Sie \"Enter\" zum Beenden des Programms\n";
}
else
{
while
cout << "\nGeben Sie den Verzeichnisort an den die Datei kopiert werden soll\n"
<< "und zwar in der Gleichen Form wie oben\n";
cin >> cPfad2;
ifstream Controlle (cPfad2);if (! Controlle)
{
cout << "Der Verzeichnisort, den Sie gewaehlt haben existiert noch nicht.\n"
<< "Er wird hiermit erstellt.\n\n";
strcat(cVerz2,cPfad2);
strcat(cVerz2,cDatei);
mkdir (cPfad2);
ofstream Kopie(cVerz2);
cout << "Drueken Sie \"Enter\" um das Programm zu Beenden";
}
else
{
strcat(cVerz2,cPfad2);
strcat(cVerz2,cDatei);
ofstream Kopie(cVerz2);
cout << "Drueken Sie \"Enter\" um das Programm zu Beenden";
}
}
getchar();
}
-
Erstmal: in Code-Tags sieht das gleich viel übersichtlicher aus

Ansonsten:
technisch:
* es heißt "int main()"
* was soll das alleinstehende "while" da?
* die strcat(cVerz2,..) Aufrufe kannst du eigentlich vor die if(!Controlle) ziehen
* warum verwendest du keine STL-Strings? Die sind viel einfacher zu handhaben.inhaltlich:
* Die Dateien geöffnet hast du jetzt, nun mußt du nur noch den Inhalt von iFile nach Kopie bekommen
-
oh, des mit dem while, ist wohl ein fehler!!
Genau da liegt es Problem, den inhalt rüber zu bekommen!!CStoll schrieb:
Erstmal: in Code-Tags sieht das gleich viel übersichtlicher aus

meinst du mit Code Tags, dass der code eingerückt ist??
Des iser nämlich im Original..CStoll schrieb:
* warum verwendest du keine STL-Strings? Die sind viel einfacher zu handhaben.
Was sind STL-Strings?
-
Genau da liegt es Problem, den inhalt rüber zu bekommen!!
streams haben die Methoden read() bzw. write() dafür.
Vlast schrieb:
CStoll schrieb:
Erstmal: in Code-Tags sieht das gleich viel übersichtlicher aus

meinst du mit Code Tags, dass der code eingerückt ist??
Des iser nämlich im Original..nur wird diese Einrückung so nicht angezeigt - umgib deine Quelltexte mal mit {cpp}...{/cpp} (allerdings mit eckigen Klammern []), dann sieht man das viel besser.
CStoll schrieb:
* warum verwendest du keine STL-Strings? Die sind viel einfacher zu handhaben.
Was sind STL-Strings?
die C++ Variante von Strings. Die machen da, was du bei char-Arrays von Hand machen mußt (strcat etc), automatisch.
PS: Lies dir mal die STL-Dokumentation durch oder diese Seite.
-
aja!
Nur leider hab ich überhaupt keinen Plan, wie ich des ins Programm einbauen soll

also die befehle mit read bzw write..
muss ich die anstelle des of/if-streams machen oder irgendwie koppeln??
-
koppeln
read() und write() sind einzelne Methoden der ifstreams bzw. ofstreams - d.h. du liest von iFile in einen Zwischenspeicher und schreibst von dort aus nach Kopie, solange (hint: while()) noch Daten zu lesen sind.
-
OK! Danke!!
Werds mal versuchen!!!