Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Γεια σας παιδιά,

χρειάζομαι τη βοήθειά σας! Προσπαθώ να φτιάξω ένα c++ πρόγραμμα που θα κάνει cp (copy)

ένα directory από ένα directory σε ένα άλλο! Το πρόβλημα είναι ότι αυτό το directory το παίρνω από το χρήστη ως string μέσα από το πρόγραμμα, και δεν ξέρω πώς μπορώ να το κάνω να δουλέψει συνδιάζοντας και τα δύο.

 

Δηλαδή, να είχα κάτι τέτοιο: (από τη φαντασία μου φυσικά)

#include <iostream>
#include <cstdlib>

using namespace std;

string user_input;

int main()
{
    getline(cin, user_input);
    system("cp -r ~/Desktop/Tmp user_input"); //edit: -r

    return 0;
}

Βεβαίως αυτό εδώ δεν δουλεύει... Και αυτό είναι και το πρόβλημα! :D

Δεν ξέρω ούτε bash, και έτσι γίνεται ακόμη πιο δύσκολο! :(

Αν κάποιος γνωρίζει, σας παρακαλώ ας με βοηθήσει...

 

Edit: Άκυρο όλο παιδιά, όποιος μπορεί ας μου δώσει απλά ένα bash script το οποίο θα κάνει copy ένα αρχείο της επιλογής του χρήστη σε  ένα path της επιλογής του χρήστη!

 

Ευχαριστώ!

Επεξ/σία από ICheats
Δημοσ.

Η γλώσσα του forum είναι η Ελληνική, παρακαλώ να την χρησιμοποιούμε και στους τίτλους των θεμάτων μας. Ευχαριστώ!

Δημοσ.

Η γλώσσα του forum είναι η Ελληνική, παρακαλώ να την χρησιμοποιούμε και στους τίτλους των θεμάτων μας. Ευχαριστώ!

 

Ευχαριστω! Συγγνωμη για το λαθος!

Δημοσ.

Στη C++ οι μεταβλητές δεν γίνονται evaluate μέσα σε strings όπως μπορεί να γίνει σε άλλες γλώσσες (π.χ PHP,Python). Για να πάρεις αυτό που θέλεις θα πρέπει να "ενώσεις" (concatenate) τα δύο strings.

 

Υποθέτω ότι το Tmp είναι κατάλογος και όχι αρχείο, εάν ισχύει αυτό τότε η σύνταξη της cp είναι λάθος. Για να αντιγράψεις καταλόγους θα πρέπει να το κάνεις αναδρομικά (-r switch).

 

Επίσης όταν καλείς συναρτήσεις ανάλογες της system με user input θα πρέπει να "καθαρίσεις" (sanitize) το user input.

 

Δες εδώ διάφορους τρόπους για να αντιγράψεις ένα αρχείο.

  • Like 1
Δημοσ.

Στη C++ οι μεταβλητές δεν γίνονται evaluate μέσα σε strings όπως μπορεί να γίνει σε άλλες γλώσσες (π.χ PHP,Python). Για να πάρεις αυτό που θέλεις θα πρέπει να "ενώσεις" (concatenate) τα δύο strings.

 

Υποθέτω ότι το Tmp είναι κατάλογος και όχι αρχείο, εάν ισχύει αυτό τότε η σύνταξη της cp είναι λάθος. Για να αντιγράψεις καταλόγους θα πρέπει να το κάνεις αναδρομικά (-r switch).

 

Επίσης όταν καλείς συναρτήσεις ανάλογες της system με user input θα πρέπει να "καθαρίσεις" (sanitize) το user input.

 

Δες εδώ διάφορους τρόπους για να αντιγράψεις ένα αρχείο.

 

Ο Tmp είναι όντως κατάλογος! Επίσης ξέχασα να το βάλω το -r παράμετρο. Το διορθώνω επάνω!

Κοιτάζω τώρα τους τρόπους! Ευχαριστώ για τη γρήγορη απάντηση!

 

Γιατί να το κάνεις με την system?

 

http://www.cprogramming.com/tutorial/cfileio.html

FILE *sourceArxeio;
FILE *arxeioProorismoy;

όσο το sourceArxeio έχει γραμμές τις γράφεις στο arxeioProorismoy.

κλείσε το sourceArxeio
κλείσε το arxeioProorismoy

Στο link δες το τμήμα Binary file I/O - fread and fwrite

 

Ναι, το ειχα σκεφτει κι εγω αλλα μιας και το Tmp ειναι καταλογος δεν θελω να χρησιμοποιήσω συμβατικές μεθόδους γιατί από εκεί θα πρέπει να καταφύγω σε ls και τέτοια! Είναι ιστορία!

 

Καμιά ιδέα παιδιά? Η ιστοσελίδες δεν βοηθούν πολύ! :(

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...