Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    C: come leggere il contenuto di una directory

    come faccio in C a leggere il contenuto di una directory?
    e farmi stampare a video tutti file che la cartella contiene??
    Grazie

  2. #2
    sistema operativo?

  3. #3
    sto lavorando su mandrake 8.2

  4. #4
    Sistema Unix Like dunque.

    Allora, tieni presente che non sono un guru in POSIX, comunque:

    Hai bisogno di un descrittore di directory e una struttura che contenga i dati nella directory.

    Nel seguente codice ho tralasciato tutto il tralasciabile, vedi il man per spiegazioni dettagliate.

    codice:
    struct dirent * Dirent;
    DIR * dir;
    struct stat s; 
    
    dir = opendir(m_base);
    
    while((Dirent = readdir(dir)) != NULL)	
    {
      printf(Dirent->d_name);
      stat(Dirent->d_name, &s);
      printf(Dirent->d_name);
      if (S_ISDIR(s.st_mode))
         /*e' una directory, puoi ripartire 
           ricorsivamente da qui se necessario*/
      
    }

  5. #5
    dimenticavo....
    closedir(dir);

  6. #6
    non riesco a farlo andare
    ho provato uno programma semplice:
    #include <stdio.h>
    #include <string.h>
    #include <fontl.h>
    #include <sys/tapes.h>
    #include <sys/stat.h>


    int main()
    {
    struct dirent * Dirent;
    DIR * dir;
    struct stat s;

    dir = opendir(m_base);

    while((Dirent = readdir(dir)) != NULL)
    {
    printf(Dirent->d_name);
    stat(Dirent->d_name, &s);
    printf(Dirent->d_name);
    if (S_ISDIR(s.st_mode))
    /*e' una directory, puoi ripartire
    * ricorsivamente da qui se necessario*/

    }
    closedir(dir);

    return 0;
    }

    quando compilo ecco gli errori:
    lettura_cartella.c:3:19: fontl.h: No such file or directory
    lettura_cartella.c:4:23: sys/tapes.h: No such file or directory

    mentre se li commento:
    #include <stdio.h>
    #include <string.h>
    //#include <fontl.h>
    //#include <sys/tapes.h>
    #include <sys/stat.h>


    int main()
    {
    struct dirent * Dirent;
    DIR * dir;
    struct stat s;

    dir = opendir(m_base);

    while((Dirent = readdir(dir)) != NULL)
    {
    printf(Dirent->d_name);
    stat(Dirent->d_name, &s);
    printf(Dirent->d_name);
    if (S_ISDIR(s.st_mode))
    /*e' una directory, puoi ripartire
    * ricorsivamente da qui se necessario*/

    }
    closedir(dir);

    return 0;
    }

    ecco gli errori:
    ettura_cartella.c: In function `main':
    lettura_cartella.c:11: `DIR' undeclared (first use in this function)
    lettura_cartella.c:11: (Each undeclared identifier is reported only once
    lettura_cartella.c:11: for each function it appears in.)
    lettura_cartella.c:11: `dir' undeclared (first use in this function)
    lettura_cartella.c:12: parse error before `struct'
    lettura_cartella.c:14: `m_base' undeclared (first use in this function)
    lettura_cartella.c:16: warning: assignment makes pointer from integer without a cast
    lettura_cartella.c:18: dereferencing pointer to incomplete type
    lettura_cartella.c:19: dereferencing pointer to incomplete type
    lettura_cartella.c:19: `s' undeclared (first use in this function)
    lettura_cartella.c:20: dereferencing pointer to incomplete type
    lettura_cartella.c:25: parse error before `}'


    sai dirmi qualcosa??????
    :sgrat:

  7. #7
    fontl.h credo sia in realta fcntl.h

    prova a includere questi

    #include <errno.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <dirent.h>
    #include <unistd.h>

    comunque ti devi leggere il man, il pezzo di codice che ti ho scritto non funziona mica, e' solo un template che puoi guardare a titolo informativo ..., nel man trovi i dettagli per tutte le funzioni che ho inserito, inoltre ti spiega anche i codici di errore che queste restituiscono.

    m_base e' una variabile che contiene un percorso tipo
    m_base = "/sbin";

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.