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;
}