Acceso a directorios

Carlos Espe
18 de Marzo del 2011
Buenas, estoy haciendo un programa que entre en un directorio y cuente el tamaño de todos los archivos que hay dentro de el.

No me sale bien, me han comentado que tengo que utilizar:

struct stat st;

stat(nom, &st);

if (S_ISREG(st.st_mode)) return st.st_size; /*si es un fichero se retorna su tamaño*/


Pero no se como implementarlo, aqui os dejo el codigo:

#include
#include
#include
#include
#include
#include

int main(int argc, char **argv)
{
DIR *d;
struct dirent *dit;
struct stat info;
int i = 0;
long cont = 0;


if ((d = opendir("lalala")) == NULL) //Abro la carpeta
{
perror("Error de apertura");
return 0;
}

printf("Directorio abierton");

while ((dit = readdir(d)) != NULL) //Recorro la carpeta
{
if (dit -> d_name[0] != '.') //Compruebo que no empiece por '.'
{
i++;
printf("n%st %ld bytes", dit -> d_name, info.st_size); //Muestro por pantalla el nombre y tamaño de cada archivo
cont = cont + info.st_size; //Sumo el tamaño de los archivos
}
}

printf("nnHay %i ficheros con un total de %ld bytesnn", i, cont);

if (closedir(d) == -1) //Cierro la carpeta
{
perror("Error de cierre");
return 0;
}

printf("nDirectorio cerradonn");
return EXIT_SUCCESS;
}

Gracias


Armando Guerra Segura
20 de Febrero del 2012
Mira la windows.h igual te sirve.