Domanda

Ho percorso di una cartella, ad esempio

  

/ myfolder

o in Windows:

  

C: \ myfolder

e voglio ottenere un elenco di tutti i file in quella cartella. Come potrò farlo in C?

E 'diverso in C ++ o C99?

Come posso ottenere un elenco delle proprie cartelle?

Ogni aiuto è apprezzato.

È stato utile?

Soluzione

In sistemi operativi POSIX, è possibile chiamare opendir () e readdir (). In Windows è possibile chiamare _findfirst () e _findnext (). Con un piccolo sforzo è possibile implementare il proprio opendir () e readdir () come funzioni wrapper sotto Windows, in modo che il codice dell'applicazione può utilizzare la stessa API ovunque. Un esempio di questo può essere trovato qui .

Altri suggerimenti

È possibile utilizzare le funzioni dichiarate in dirent.h

  

dirent.h è l'intestazione del C POSIX   libreria per il linguaggio di programmazione C   che contiene costrutti che   facilitare la directory di traslazione. Il   funzione non è parte della C   standard, ma è considerato   "Pseudo-standard" ed è di solito   portabile tra le piattaforme.
   http://en.wikipedia.org/wiki/Dirent.h

#include <dirent.h>

int main(int argc, char **argv)
{
    DIR *dir;
    struct dirent *de;

    dir = opendir("."); /*your directory*/
    while(dir)
    {
        de = readdir(dir);
        if (!de) break;
        printf("%i %s\n", de->d_type, de->d_name);
    }
    closedir(dir);
    return 0;
}

L'approccio migliore in C ++ utilizza spinta file system.

Per quanto riguarda C, sarà necessario piattaforma API (POSIX / WinAPI).

documentazione POSIX + esempio: http://www.opengroup.org/onlinepubs /009695399/functions/readdir.html

Controlla la get_all_files_within_folder() ho scritto in C / C ++ qui , che ho risposto a una domanda simile ai suoi. Funziona perfettamente per me. Speranza che aiuta.

Questo è compito classica, una soluzione possiple magari trovare in Kernigan & Ritchie - The C Programming Language (capitolo 8.6). Essenza del compito è traversata ricorsiva della cartella di destinazione e le sue sottocartelle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top