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

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

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

Χαίρεται! Προσπαθω να χρησιμοποιήσω τη συνάρτηση 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;
}

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

Η readdir παίρνει όρισμα το dp δλδ readdir(dp)

 

Edit

Επίσης έχεις ξεχάσει ένα ; στη δήλωση του DIR *dp κι έχεις βάλει ένα παραπάνω μετά την πρώτη if πριν το { και στην printf πρέπει να βάλεις drip->d_name (και καλύτερα να τη γράψεις σαν: printf("%s\n",dirp->d_name); )

Δημοσ.

ωχ συγγνωμη, δεν έκανα καλη αντιγραφή απ το πρόγραμμα, τα διορθώνω...

 

EDIT: Στο compile παίρνω error την if, μου λεει πως χρησιμοποιώ else ενώ δεν έχω χρησιμοποιήσει if ο.Ο

ενώ printf("%s\n",(dirp->d_name)); λεει πως παίρνει βάζω string (char *) ενώ το όρισμα είναι struct dirent *

Δημοσ.

Εμένα πάντως (σε 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 για να τυπώνει όλα τα περιεχόμενα του φακέλου...

Δημοσ.

Όντως ο κώδικας σου κάνεις compile, ωστόσο μου εμφανίζει λογικό λάθος στην εκτέλεση του προγράμματος, μου κάνει print, no files in this directory, ενώ υπάρχουν... Ίσως κατι κάνω λάθος με το pathname..

Δημοσ.

ναι, μόλις το δοκίμασα αλλα τίποτα.. Μήπως φταίει το ότι τρέχω σε VM?

 

EDIT: Εντάξει παιδια το διόρθωσα, τελικα έγραψα pwd για να δω το fullpathname και καταλαβα ότι επρεπε να βάλω /root αντι για ~

Ευχαρίστώ πολύ για την βοήθεια, να 'στε καλα! :-) 

 

Δημοσ.

Κοίτα εμένα, όταν κατά λάθος έβαλα λάθος ορισμα στην opendir μου εμφάνισε τα περιεχόμενα του φακέλου που βρίσκεται το exe κι όχι του C:\ . Τώρα πως συμπεριφέρεται στο linux δεν ξέρω και δεν μπορώ να το δοκιμάσω τώρα...

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

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

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

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

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

Σύνδεση

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

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