Dateien kopieren in einem C Programm



  • Hallo zusammen,
    Ich habe folgendes Problem, aus einem C Programm das unter Linux läuft soll wenn eine bestimmte Bedingung erfüllt ist verschiedene Textdateien in ein anderes Verzeichnis Kopiert oder verschoben werden. Die Dateinamen der zu kopierenden Dateien liegen in einem Char Array. Kann man sowas in einem C Programm realisieren ? oder kann man Variabeln aus einem C Program an ein Shell Skript übergeben ? Ich habe keine Idee wie man sowas macht. Das Problem ist bestimmt für C Profis kein Problem. Für eure Hilfe bedanke ich mich schon im Voraus.
    Gruß
    Christian



  • Was hast du versucht, um das Problem zu lösen?

    Die Dateinamen der zu kopierenden Dateien liegen in einem Char Array

    Wirklich? Ist es nicht vielleicht ein Array auf Pointer auf Char?

    Ich habe keine Idee wie man sowas macht.

    http://lmgtfy.com/?q=copy+file+c


  • Mod

    wob schrieb:

    Ich habe keine Idee wie man sowas macht.

    http://lmgtfy.com/?q=copy+file+c

    Wenn er weiß, dass er Linux nutzt, sollte er lieber ein cp forken. Wesentlich einfacher, kürzer und besser, als das selber zu programmieren.



  • Hallo SeppJ

    Wie kann ich CP verschiedene Dateinamen übergeben ?
    an CP hatte ich am Anfang auch gedacht.

    Gruß
    Christian


  • Mod

    chris74 schrieb:

    Wie kann ich CP verschiedene Dateinamen übergeben ?
    an CP hatte ich am Anfang auch gedacht.

    Ich verstehe deine Problembeschreibung nicht. Weil du dein Problem nicht beschreibst.



  • chris74 schrieb:

    Wie kann ich CP verschiedene Dateinamen übergeben ?

    Wie rufst du denn cp auf?



  • Wie wäre es denn mit einem loop über die Dateinamen und den cp je Datei aufrufen ?



  • Eine andere Möglichkeit (ohne Kopie)
    http://en.cppreference.com/w/c/io/rename



  • Hallo SeppJ

    CP test.txt /..../test.txt

    wie kann man im C Programm den Befehl mit Variabeln schreiben ?
    CP <Variable> in der Variable sollen die verschiedenen Dateinamen stehen die dann in einer Schlefe geändert werden.

    Ist das Problem nun deutlicher geworden.



  • 1. Linux ist case sensitive.
    - Der Befehl heißt cp

    2. Wie sieht der Aufruf in deinem Code aus. Welche C-Funktion verwendest du dafür
    - Ein CP test.txt /..../test.txt einfach so im C-Code mag der Compiler nicht.



  • Hallo DirkB
    der Befehl wird so aufgerufen
    system("cp test.txt /save/test.txt")

    ein Beispiel währe super.



  • Bau dir einen String mit sprintf zusammen.

    Das Beispiel für system:

    char copy[1000]; // achte auf ausreichende Groesse
    ...
    sprintf(copy, "cp %s %s", quelle, ziel);
    system(copy);
    


  • Also ich habe bei System immer leichte Bauchschmerzen.

    1. Wird das richtige executable aufgerufen? Sollte man nicht vielleicht besser "/bin/cp" angeben statt nur "cp"?

    2. Sind Sonderzeichen wie zum Beispiel das Leerzeichen, der Backslash oder Anführungszeichen in den Dateinamen richtig gequotet? Man könnte fork+exec nehmen, um das Problem zu umgehen.


Log in to reply