1

この関数は、現在のディレクトリ内のファイルを検索します。ディレクトリをまたぐ場合は、入り込んで、現在の「.」以外のファイルを再度検索します。および以前の「..」ディレクトリ。しかし、それは私が望むようには機能しません。次のディレクトリには入りません。

int foo(char *currDir) 
{
  struct dirent *direntp;
  DIR *dirp;
  char currentDir[250];



  if ((dirp = opendir(currDir)) == NULL) 
  {
      perror ("Failed to open directory");
      return 1;
  }

  //By Sabri Mev at GYTE

  while ((direntp = readdir(dirp)) != NULL)
  {
    printf("%s\n", direntp->d_name);
    if(direntp->d_type == DT_DIR)
    {
        if(strcmp(direntp->d_name,".") !=0  && strcmp(direntp->d_name,"..") != 0)
            foo(direntp->d_name); //Recursive!   
    }
  }
  getcwd(currentDir,250);
  printf("curr Dir : %s\n",currentDir );


  while ((closedir(dirp) == -1) && (errno == EINTR)) ;

  return 0;
}
4

3 に答える 3

2

あなたのパスが間違っているからです。

これを試して

if(direntp->d_type == DT_DIR)
{   
    if(strcmp(direntp->d_name,".") !=0  && strcmp(direntp->d_name,"..") != 0) 
    {
        sprintf(currentDir, "%s/%s", currDir, direntp->d_name);
        foo(currentDir); //Recursive!   
    }
}
于 2013-04-02T12:47:31.793 に答える