Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/06/2008, 13:59
vauren77
 
Fecha de Ingreso: junio-2008
Mensajes: 1
Antigüedad: 15 años, 11 meses
Puntos: 0
Ayuda urgente. C bajo Linux.

Escribir un programa que visualice (dado un determinado directorio como parámetro):
- El nombre de los ficheros y directorios que contiene.
- Un mensaje indicando si hay:
- mas ficheros que directorios
- mas directorios que ficheros
- igual de ambos

Consigo el listado, pero no me distingue ficheros de directorios y los echa en el mismo saco. No sé si estoy usando bien los campos o me lo estoy inventando. Mi código es el siguiente:

#include <stdio.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>

int main(int argc,char*argv[])
{
DIR *directorio;
struct dirent *fichero;
struct stat atr;

int fichs=0;
int direcs=0;

directorio=opendir(argv[1]);
fichero=readdir(directorio);
while(fichero!=NULL)
{
printf("Nombre: %s\n", fichero->d_name);
if(S_ISDIR(atr.st_mode)!=0)
direcs++;
else
fichs++;
fichero=readdir(directorio);
}//Fin while
closedir(directorio);

printf("\nHay %d ficheros y %d directorios.\n",fichs,direcs);
if(direcs>fichs)
printf("\nHay mas directorios que ficheros.\n");
else if(direcs<fichs)
printf("\nHay mas ficheros que directorios.\n");
else
printf("\nTienen los mismos.\n");
return 0;
}