Newsgroup: it.comp.lang.c
Titolo: Programmino per listare le directory

Vorrei crearmi un programma che mi listi (in un txt o html o che sia) 
tutte le directory e i file contenuti in esse (magari tramite menu ad 
albero da espandere).
Impossibile farlo in C? è l'unico linguaggio di programmazione che 
conosco, e conosco anche abbastanza bene come trattare i files, ma non 
le directory di sistema..insomma, datemi consiglio :)

 le directory di sistema..insomma, datemi consiglio :)
E' semplice farlo...
basta studiare!!

 wrote 


Beh, studiando magari invece si accorge che non e' possibile farlo con
il solo C standard.
Per questo tipo di cose bisogna ricorrere a chiamate alle API del
sistema operativo.
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 le directory di sistema..insomma, datemi consiglio :)
Salve,
non hai specificato la piattaforma. Nel caso fosse Linux,
prova questo codice:
<code>
#include <dirent.h>   // contiene la struct dirent, funzioni per DIR
#include <sys/stat.h> // contiene la funzione 'stat'
DIR* dir;
if( (dir = opendir(argv[1])) == NULL ) {
	cerr << "Errore: la cartella indicata non e' valida!\n"
	<< "Sintassi: ./id3tag [/home/user/cartellaMP3/]\n"
	<< "          ./id3tag -f [nomefile].mp3\n\n";
	perror("opendir");
         exit(EXIT_FAILURE);
} else {
	char filepath[256];
	struct dirent* namelist;
	struct stat data; // controlla se file o directory
	while( (namelist = readdir(dir)) != NULL ) { // nome valido?
		strcpy(filepath, argv[1]);
		strcat(filepath, namelist->d_name); //
			stat(filepath, &data);
			if( !S_ISDIR(data.st_mode) ) { // controlla se // e' un file, ci sono 
tante altre macro per le directory, ecc.
...
</code>
Saluti
-- 
cikko <cikkox [on] yahoo . it>
||| 
http://cikkox.altervista.org
 |||
||| GNU/Linux Registered User #365929 |||
||| GnuPG/OpenPGP key available |||

 strcat(filepath, namelist->d_name); //
Argh!
Max

 sistema operativo.
Bene...studiando appunto!
E' ovvio che ogni sistema operativo ha il suo set di API per accedere
alle directory!

 prova questo codice:
sono su windows..

 		strcat(filepath, namelist->d_name); //
Questo codice, prima o poi, produrrà un bel seg fault.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
L'ho scritto di tutta fretta, poi ognuno
fa gli opportuni controlli o cambia il tutto.
Lo scopo era fornire lo spunto.


 Argh!
Pero' raga', meglio che mi avete ammonito, cosi ho avuto modo di
fare la correzione, altrimenti non si sa:
filepath = (char*) calloc(256, sizeof(char));
// eventuale nuova lettura variabile, magari con fgets
filepath = (char*) realloc(nomefile, (strlen(nomefile)) * sizeof(char));
e per finire:
filepath[strlen(filepath) - 1] = '\0' // oppure (char) NULL;


 filepath[strlen(filepath) - 1] = '
-- 


 > filepath[strlen(filepath) - 1] = 
Non č affatto detto che una stringa letta con fgets() abbia '\n' come
ultimo carattere, quindi attenzione a fare i controlli.  Inoltre non va
usato NULL, ma '\0'.


 di API per accedere alle directory!
Si, "e' ovvio", ma se l'OP ha posto la domanda vuole dire che per lui
non era ovvio...
A volte vuoi studiare ma non sai cosa studiare e la tua risposta di
sicuro non gli ha indicato nessuna direzione.
Adesso sa che deve guardarsi le API del suo O.S. e che il C da solo puo'
fare poco...


 fare poco...
Beh, se conosce il C come ha detto, saprebbe che le librerie per listare 
le dir non sono include nello standard; oltretutto facendo una ricerca 
con google, tipo "manipolare directory windows", ti escono molte 
informazioni sulle API...di conseguenza, hai raggiunto lo scopo!!

 Beh, se conosce il C come ha detto[...]
"Conoscere il C" ha purtroppo un significato troppo spesso soggettivo...


 
Possedev un cane che sapeva dire il suo nome.  Si chiamava Bau.
                 -- Enzo Iacchetti


Taci coglione.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Taci coglione.
Quafo smetterai di offendere.


 
Parole sante!!!