[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