[C con Clase] Directorios/Archivos en C
Programante
programante en gmail.com
Sab Oct 6 18:22:57 CEST 2007
David lukas escribió:
> Hola , estoy intentando realizar una aplicación sobre Unix y estoy
> estancado en esta funcion :
>
> #include<stdio.h>
> #include<dirent.h>
> #include<sys/stat.h>
> #include<sys/types.h>
>
> int main(){
>
> DIR *dir_act;
> struct dirent *dirp;
> struct stat fich;
> char *nombre;
> char *ruta= "/bin";
> int arch_gid;
> double siz_arch;
>
> if((dir_act = opendir(ruta)) == NULL)
> printf("Error al abrir el directorio\n");
>
> dirp = readdir(dir_act);
Deberías comprobar que dirp no sea nulo.
> nombre=dirp->d_name;
> stat(nombre,&fich);
> arch_gid = fich.st_gid;
> siz_arch= fich.st_size;
>
> printf("tamaño : %f \n", siz_arch);
Creo que el tamaño lo tienes en que intentas imprimir un entero
(siz_arch) como si fuera un float (%f). Como los bits tienen distinto
significado en los enteros y en los float, te sale un resultado sin sentido.
O bien le dices a printf que el tamaño está en un entero printf("tamaño
: %d\n", siz_arch); o bien conviertes a float antes de enviarlo a printf
printf("tamaño : %f \n", (float)siz_arch); aunque ésto último no resulte
muy útil en este caso, ya que el tamaño de los archivos nunca será
fraccionario.
>
> return 0;
> }
>
> Lo que simplemente hace es , intenta coger el tamaño del primero
> archivo que se encuentra en esa ruta del directorio , pero me sale un
> resultado sin sentido : " tamaño : -163754450.000000 ";
> Creo q el problema esta en la ruta , por ke si pongo "." , me sale los
> resultados correctos. Tb hay veces q poniendo otra runa me sale solo
> el primer resultado correcto y luego todo los demas del mismo tamaño q
> el primero , y no se por q :X .
>
> Gracias :) .
Más información sobre la lista de distribución Cconclase