ICheats Δημοσ. 25 Ιουνίου 2013 Δημοσ. 25 Ιουνίου 2013 (επεξεργασμένο) Γεια σας παιδιά, χρειάζομαι τη βοήθειά σας! Προσπαθώ να φτιάξω ένα 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; } Βεβαίως αυτό εδώ δεν δουλεύει... Και αυτό είναι και το πρόβλημα! Δεν ξέρω ούτε bash, και έτσι γίνεται ακόμη πιο δύσκολο! Αν κάποιος γνωρίζει, σας παρακαλώ ας με βοηθήσει... Edit: Άκυρο όλο παιδιά, όποιος μπορεί ας μου δώσει απλά ένα bash script το οποίο θα κάνει copy ένα αρχείο της επιλογής του χρήστη σε ένα path της επιλογής του χρήστη! Ευχαριστώ! Επεξ/σία 25 Ιουνίου 2013 από ICheats
parsifal Δημοσ. 25 Ιουνίου 2013 Δημοσ. 25 Ιουνίου 2013 Η γλώσσα του forum είναι η Ελληνική, παρακαλώ να την χρησιμοποιούμε και στους τίτλους των θεμάτων μας. Ευχαριστώ!
ICheats Δημοσ. 25 Ιουνίου 2013 Μέλος Δημοσ. 25 Ιουνίου 2013 Η γλώσσα του forum είναι η Ελληνική, παρακαλώ να την χρησιμοποιούμε και στους τίτλους των θεμάτων μας. Ευχαριστώ! Ευχαριστω! Συγγνωμη για το λαθος!
stevvie Δημοσ. 25 Ιουνίου 2013 Δημοσ. 25 Ιουνίου 2013 Στη C++ οι μεταβλητές δεν γίνονται evaluate μέσα σε strings όπως μπορεί να γίνει σε άλλες γλώσσες (π.χ PHP,Python). Για να πάρεις αυτό που θέλεις θα πρέπει να "ενώσεις" (concatenate) τα δύο strings. Υποθέτω ότι το Tmp είναι κατάλογος και όχι αρχείο, εάν ισχύει αυτό τότε η σύνταξη της cp είναι λάθος. Για να αντιγράψεις καταλόγους θα πρέπει να το κάνεις αναδρομικά (-r switch). Επίσης όταν καλείς συναρτήσεις ανάλογες της system με user input θα πρέπει να "καθαρίσεις" (sanitize) το user input. Δες εδώ διάφορους τρόπους για να αντιγράψεις ένα αρχείο. 1
nucleus Δημοσ. 25 Ιουνίου 2013 Δημοσ. 25 Ιουνίου 2013 Γιατί να το κάνεις με την system? http://www.cprogramming.com/tutorial/cfileio.html FILE *sourceArxeio; FILE *arxeioProorismoy; όσο το sourceArxeio έχει γραμμές τις γράφεις στο arxeioProorismoy. κλείσε το sourceArxeio κλείσε το arxeioProorismoy Στο link δες το τμήμα Binary file I/O - fread and fwrite
ICheats Δημοσ. 25 Ιουνίου 2013 Μέλος Δημοσ. 25 Ιουνίου 2013 Στη 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 και τέτοια! Είναι ιστορία! Καμιά ιδέα παιδιά? Η ιστοσελίδες δεν βοηθούν πολύ!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα