Ottenere l'elenco dei file in una cartella utilizzando C
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.
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.