PerfectDark Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 (επεξεργασμένο) Χαίρεται! Προσπαθω να χρησιμοποιήσω τη συνάρτηση readdir στη C ετσι ώστε να μπορέσω να εμφανίσω στην οθόνη τα ονόματα των αρχείων ενος directory. (Στον παρακάτω κώδικα προσπαθώ να εμφανίσω ένα στοιχείο του πίνακα μονο για δοκιμή) Έχω γράψει τον παρακάτω κώδικα λοιπόν αλλα έχω κάνει κάποιο λάθος, νομίζω πως ειμαι κοντα στην λύση αλλα δε μπορώ να βρώ το λάθος μου, εαν μπορείτε να με βοηθήσετε, ευχαριστώ #include <dirent.h>#include <stdio.h> int main (){ struct dirent *dirp; DIR *dp; if ((dp = opendir("~/Desktop")) == NULL);{ printf("No file in this directory"); return 0; } else { dirp=readdir(dp); printf("%s\n",(dirp->d_name)); }return 0;} Επεξ/σία 24 Νοεμβρίου 2013 από PerfectDark
bird Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 Η readdir παίρνει όρισμα το dp δλδ readdir(dp) Edit Επίσης έχεις ξεχάσει ένα ; στη δήλωση του DIR *dp κι έχεις βάλει ένα παραπάνω μετά την πρώτη if πριν το { και στην printf πρέπει να βάλεις drip->d_name (και καλύτερα να τη γράψεις σαν: printf("%s\n",dirp->d_name); )
PerfectDark Δημοσ. 24 Νοεμβρίου 2013 Μέλος Δημοσ. 24 Νοεμβρίου 2013 ωχ συγγνωμη, δεν έκανα καλη αντιγραφή απ το πρόγραμμα, τα διορθώνω... EDIT: Στο compile παίρνω error την if, μου λεει πως χρησιμοποιώ else ενώ δεν έχω χρησιμοποιήσει if ο.Οενώ printf("%s\n",(dirp->d_name)); λεει πως παίρνει βάζω string (char *) ενώ το όρισμα είναι struct dirent *
bird Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 Εμένα πάντως (σε windows και για αυτό έχω αλλάξει το όρισμα της opendir) δουλεύει κανονικά με τις διορθώσεις που σου είπα... #include <dirent.h> #include <stdio.h> int main () { struct dirent *dirp; DIR *dp; if ((dp = opendir("C:\\")) == NULL){ printf("No file in this directory"); return 0; } else { while((dirp=readdir(dp))!=NULL) printf("%s\n",dirp->d_name); } return 0; } Άλλαξα και την printf μέσα στο else για να τυπώνει όλα τα περιεχόμενα του φακέλου...
PerfectDark Δημοσ. 24 Νοεμβρίου 2013 Μέλος Δημοσ. 24 Νοεμβρίου 2013 Όντως ο κώδικας σου κάνεις compile, ωστόσο μου εμφανίζει λογικό λάθος στην εκτέλεση του προγράμματος, μου κάνει print, no files in this directory, ενώ υπάρχουν... Ίσως κατι κάνω λάθος με το pathname..
PerfectDark Δημοσ. 24 Νοεμβρίου 2013 Μέλος Δημοσ. 24 Νοεμβρίου 2013 ναι, μόλις το δοκίμασα αλλα τίποτα.. Μήπως φταίει το ότι τρέχω σε VM? EDIT: Εντάξει παιδια το διόρθωσα, τελικα έγραψα pwd για να δω το fullpathname και καταλαβα ότι επρεπε να βάλω /root αντι για ~ Ευχαρίστώ πολύ για την βοήθεια, να 'στε καλα!
bnvdarklord Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 Δεν πιστευω. Για δοκιμασε με το τρεχον path: "." ή "./"
bird Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 Κοίτα εμένα, όταν κατά λάθος έβαλα λάθος ορισμα στην opendir μου εμφάνισε τα περιεχόμενα του φακέλου που βρίσκεται το exe κι όχι του C:\ . Τώρα πως συμπεριφέρεται στο linux δεν ξέρω και δεν μπορώ να το δοκιμάσω τώρα...
bnvdarklord Δημοσ. 24 Νοεμβρίου 2013 Δημοσ. 24 Νοεμβρίου 2013 Το δοκιμασα σε VM σε Ubuntu και φαινετια να δουλευει για διαφορους φακελους εκτος το Desktop για καποιο λογο.
PerfectDark Δημοσ. 24 Νοεμβρίου 2013 Μέλος Δημοσ. 24 Νοεμβρίου 2013 παιδία δείτε το edit στο παραπάνω ποστ. Σας ευχαριστώ πολύ! 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα