Problemilla al programar usando stat

Imagen de indarkness
0 puntos

HOLA!!
Vereis estoy intentando hacer un programa parecido a ls-l,para ello tengo una funcion EStadof que me dice si una string, que le meto desde teclado es un directorio o un fichero. El problema, es que si quiero listar varios archivos o directorios, despues de usar scandir, me da un error la funcion Estadof,y no se porque.Se que falla donde lo he puesto en el codigo,pero no se porque falla ahi,me da la impresion de que a mi funcion no le llega una cadena de caracteres y por eso falla stat().
Alguien me hecha una mano??

GRACIAS


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

int Estadof(char *f)
{
  int n;
  struct stat st;

  n=0;

  stat(f,&st);//informacion del fichero y la pasa a st que tiene la estructura

  if(stat(f, &st)==0)
    {
      if(S_ISDIR(st.st_mode))
    {
    n=0;
    printf("es un directorio \n");
    }
      if(S_ISREG(st.st_mode))
    {
    n=1;
    printf("es un fichero regular \n");
    }
    }
  else
  {
    perror("error en stat");//stat() ha fallado y ha devuelto -1
    n=-1;
  }

  return n;
}

int Listdir(char *d)
{
  int n=0;
  int i;
  int s=0;
   
  struct dirent **archivos;
 
  n=scandir(d,&archivos,0,alphasort);

  if(n!=0)
    {
      for(i=0;id_name,".")!=0 && strcmp(archivos[i]->d_name,"..")!=0)
        {
            printf("%s \n",archivos[i]->d_name);
           
              s=Estadof(archivos[i]->d_name);//AQUI ES DONDE CREO QUE ESTA EL PROBLEMA
            //printf("%u \n",s);
        }

     
    }
    }
  else
    perror("no hay directorios");


}
int main(int argc,char *argv[])
{
    int i=0;

    i=Listdir(argv[1]);
    //Estadof(argv[1]);

  return 0;
}