Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Mit C/C++ Dateien kopieren, bzw. Befehle ausführen

  1. #1
    Gast

    Post Mit C/C++ Dateien kopieren, bzw. Befehle ausführen

    Hi Leute,
    bin nicht richtig fit in C/C++, aber ich hätte da mal eine Frage. Und zwar wie kann ich von C/C++ aus Befehle auf der Bash erledigen, z.B. eine Datei kopieren die dann in ein bestimmtes vom User festgelegtes Verzeichnis kopiert wird. Hat jemand ein Beispiel für so ein Programm? Wäre dankbar.
    Have a nice and productive Day.

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.10.1999
    Ort
    Dresden
    Beiträge
    255

    Post

    Befehle der Bash anzusprechen, ist u.a. mit "system" möglich. Als Argument benötigt der Befehl eine Zeichenkette. Ein Kopierprogramm könnte somit wie folgt aussehen:
    <pre>
    // Simples Kopieren über "cp":
    #include &lt;string&gt;

    int main(int argc, char** argv)
    {
    if (argc != 3) {
    cerr &lt;&lt; "Verwendung: " &lt;&lt; argv[0] &lt;&lt; " &lt;source&gt; &lt;destination&gt;\n"
    return -1;
    }

    string command = "cp "+string(argv[1])+" "+string(argv[2]);

    system(command.c_str());
    }
    </pre>

    In reinem C musst Du nur den string durch ein genügend großes char-Feld ersetzen.

    Besser - weil effizienter - ist aber die Verwendung der C++- bzw. C-Sprachmittel; das Kopierprogramm könnte in C++ so geschrieben werden:

    <pre>
    #include &lt;fstream&gt;

    int main(int argc, char** argv)
    {
    if (argc != 3) {
    cerr &lt;&lt; "Verwendung: " &lt;&lt; argv[0] &lt;&lt; " &lt;source&gt; &lt;destination&gt;\n"
    return -1;
    }

    ifstream source(argv[1]);
    if ( source == NULL ){
    cerr &lt;&lt; "Kann Quelldatei nicht oeffnen\n";
    return -1;
    }
    ofstream dest(argv[2]);
    if ( dest == NULL ){
    cerr &lt;&lt; "Kann Zieldatei nicht oeffnen\n";
    return -1;
    }
    char c;

    while ( source.get(c) )
    dest.put(c);

    }
    </pre>

    Hoffe, es hilft Dir weiter...
    Thomas

  3. #3
    Gast

    Talking

    Thanx, für die megaschnelle Antwort. Ich hoffe ich komm damit klar.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •