ICheats Δημοσ. 10 Ιανουαρίου 2013 Δημοσ. 10 Ιανουαρίου 2013 Καλησπέρα παιδιά, αυτές τις μέρες φτιάχνω ένα πρόγραμμα το οποίο κάνει αριθμητικές πράξεις αλλά και άλλα πράγματα... Μέσα σε αυτά τα άλλα θέλω να είναι και η αποθήκευση ιστορικού... Δηλαδή να φτιάχνει ένα txt αρχείο και να γράφει ό,τι πληκτρολόγησε ο χρήστης... Το πρόβλημα όμως είναι ότι δίνοντας ακόμα και τις σωστές εντολές κάτι λάθος συμβαίνει με το path... Και αυτό γιατί από,τι καταλαβαίνω δεν μπορεί να το δημιουργήσει το αρχείο! ο κώδικας είναι ο εξής: ofstream logfile; logfile.open ("$HOME/logfile.txt"); logfile << "logfile.txt"; logfile.close(); έχω δοκιμάσει πάρα πολλούς τρόπους να το συντάξω το path αλλά και πάλι δεν δουλεύει κανένας!! έχω ήδη κάνει #include <fstream>!! Μόνο για λίγα λεπτά δούλεψε κάποια στιγμή αρκετά πιο πριν αλλά δεν μπορώ να θυμηθώ υπό ποιες συνθήκες! Επίσης να συμπληρώσω ότι βρίσκομαι σε λειτουργικό linux mint cinnamon χρησιμοποιόντας τον gcc compiler με ide το codeblocks... Ευχαριστώ πολύ!
corrupted Δημοσ. 10 Ιανουαρίου 2013 Δημοσ. 10 Ιανουαρίου 2013 Εισαι σε λαθος section. Πρεπει να μεταφερθει στον προγραμματισμο. Στειλε μηνυμα σε καποιον απο τους mods και ζητα να μεταφερθει. Και μολις γινει η μεταφορα, ας αυτοκαταστραφει και το δικο μου post.
defacer Δημοσ. 10 Ιανουαρίου 2013 Δημοσ. 10 Ιανουαρίου 2013 Τί ακριβώς περιμένεις να γίνει γράφοντας "$HOME" σαν μέρος του path?
ICheats Δημοσ. 11 Ιανουαρίου 2013 Μέλος Δημοσ. 11 Ιανουαρίου 2013 Τί ακριβώς περιμένεις να γίνει γράφοντας "$HOME" σαν μέρος του path? Να πάρει το /home/username/ από μονο του! Είναι λάθος? Εισαι σε λαθος section. Πρεπει να μεταφερθει στον προγραμματισμο. Στειλε μηνυμα σε καποιον απο τους mods και ζητα να μεταφερθει. Και μολις γινει η μεταφορα, ας αυτοκαταστραφει και το δικο μου post. Μάλλον κάνεις λάθος... Εμένα μου λέει insomnia.gr\ Προγραμματισμός \ Προγραμματισμός
παπι Δημοσ. 11 Ιανουαρίου 2013 Δημοσ. 11 Ιανουαρίου 2013 Μάλλον κάνεις λάθος... Εμένα μου λέει insomnia.gr\ Προγραμματισμός \ Προγραμματισμός Δεν εχει αδικο. Στο subforum για linux επρεπε να το βαλεις, εφοσον δεν εχει να κανει με την γλωσσα αλλα με το pathing του OS που ειναι linux. Πχ για windows βαζεις %username%/folderName/file.ext
defacer Δημοσ. 11 Ιανουαρίου 2013 Δημοσ. 11 Ιανουαρίου 2013 Να πάρει το /home/username/ από μονο του! Είναι λάθος? Καλείς την ofstream::open, η οποία όπως λέει στο documentation με τη σειρά της καλεί την filebuf::open. Καμία από τις δύο δε λέει τίποτα σχετικά με το ότι μετατρέπει με "μαγικό" τρόπο το environment variable HOME στην πραγματική του τιμή, πόσο μάλλον με τη σύνταξη $HOME η οποία είναι ιδιαιτερότητα του shell που χρησιμοποιείς (το οποίο είναι παντελώς άσχετο με τη C++ όπως είναι λογικό). Δε θα έπρεπε να είναι προφανές ότι εφόσον δε λέει συγκεκριμένα πως το κάνει, πάει να πει ότι δεν το κάνει; Επιπλέον, αν όντως το έκανε αυτό το πράγμα τότε θα έπρεπε να υπάρχει κάποιος άλλος τρόπος για να ανοίξεις ένα αρχείο που ονομάζεται κυριολεκτικά "$HOME" (είναι μια χαρά επιτρεπόμενο filename). Αλλά ούτε τίποτα σχετικό μ' αυτό αναφέρεται πουθενά. Άρα;
ICheats Δημοσ. 14 Ιανουαρίου 2013 Μέλος Δημοσ. 14 Ιανουαρίου 2013 Δεν εχει αδικο. Στο subforum για linux επρεπε να το βαλεις, εφοσον δεν εχει να κανει με την γλωσσα αλλα με το pathing του OS που ειναι linux. Πχ για windows βαζεις %username%/folderName/file.ext ok, κατάλαβα!! Ευχαριστώ! Καλείς την ofstream::open, η οποία όπως λέει στο documentation με τη σειρά της καλεί την filebuf::open. Καμία από τις δύο δε λέει τίποτα σχετικά με το ότι μετατρέπει με "μαγικό" τρόπο το environment variable HOME στην πραγματική του τιμή, πόσο μάλλον με τη σύνταξη $HOME η οποία είναι ιδιαιτερότητα του shell που χρησιμοποιείς (το οποίο είναι παντελώς άσχετο με τη C++ όπως είναι λογικό). Δε θα έπρεπε να είναι προφανές ότι εφόσον δε λέει συγκεκριμένα πως το κάνει, πάει να πει ότι δεν το κάνει; Επιπλέον, αν όντως το έκανε αυτό το πράγμα τότε θα έπρεπε να υπάρχει κάποιος άλλος τρόπος για να ανοίξεις ένα αρχείο που ονομάζεται κυριολεκτικά "$HOME" (είναι μια χαρά επιτρεπόμενο filename). Αλλά ούτε τίποτα σχετικό μ' αυτό αναφέρεται πουθενά. Άρα; Ναι, το σκεφτόμουν και εγώ αυτό, αλλά πώς να το κάνω για να δουλέψει? Να βάλω σκέτο /home/file.txt ???
defacer Δημοσ. 14 Ιανουαρίου 2013 Δημοσ. 14 Ιανουαρίου 2013 Ναι, το σκεφτόμουν και εγώ αυτό, αλλά πώς να το κάνω για να δουλέψει? Να βάλω σκέτο /home/file.txt ??? https://www.google.gr/search?q=c%2B%2B+get+environment+variable Αυτό σου δίνει καμιά ιδέα;
ICheats Δημοσ. 15 Ιανουαρίου 2013 Μέλος Δημοσ. 15 Ιανουαρίου 2013 https://www.google.gr/search?q=c%2B%2B+get+environment+variable Αυτό σου δίνει καμιά ιδέα; Ευχαριστω αλλά δεν μπορώ να καταλάβω πώς να χειριστώ αυτή την πληροφορία! παρακαλώ βοήθησέ με εξηγώντας μου βήμα βήμα! Τώρα μαθαίνω c++!
bird Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Έχω καιρό να χρησιμοποιήσω linux και δεν έχω τώρα πρόσβαση για να τσεκάρω αλλά δε θα δουλεύε κάτι της μορφής: logfile.open ("~/logfile.txt"); ??? (όσο για το link που σου έδωσε παραπάνω ο defacer, διάβασε την περιγραφή της getenv και κάνε μερικές δοκιμές να καταλάβεις )
ICheats Δημοσ. 16 Ιανουαρίου 2013 Μέλος Δημοσ. 16 Ιανουαρίου 2013 όχι δεν δουλεύει αυτό: logfile.open ("~/logfile.txt"); Το είχα κάνει και άλλη φορά αλλά δεν δούλεψε! Κοίταξε, είδα ότι η getenv έδινε κάποια paths που είναι και τα paths που βλέπει από μόνο του το Linux αλλά πώς μπορεί να με βοηθήσει αυτό?
defacer Δημοσ. 17 Ιανουαρίου 2013 Δημοσ. 17 Ιανουαρίου 2013 Φτιάχνεις ένα string από την επιστρεφόμενη τιμή της getenv() και έτσι δημιουργείς το path που θέλεις: string logFilePath(getenv("HOME") + string("/logfile.txt")); ofstream logfile(logFilePath); logfile << "logfile.txt"; logfile.close();
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα