0

すべてのファイルとフォルダリストを再帰的に取得しようとしましたが、ドキュメントのサブディレクトリとその内部しか取得できません。サブディレクトリ内にある他のフォルダは取得できません。再帰的に行う方法がわかりません。助けていただければ幸いです。

          #include <stdio.h>
     #include <sys/types.h>
     #include <dirent.h>
     #include <windows.h>
     #include <unistd.h>
     #include <string.h>
     void list(char *a);
     void reader(char *path);   
     int
     main (void)
     {
       DIR *dp;
       struct dirent *ep;

       dp = opendir ("C:\\Users\\pen\\Documents\\");
       if (dp != NULL)
         {
           while (ep = readdir (dp)){

GetFileAttributes(ep->d_name); 
if(FILE_ATTRIBUTE_DIRECTORY & GetFileAttributes(ep->d_name))
{

        if (strcmp(".",ep->d_name)==0)
            continue;

    if (strcmp("..",ep->d_name)==0)
    continue;



     reader(ep->d_name);

}

             }
             closedir(dp);

         }
       else
         perror ("Couldn't open the directory");
         closedir(dp);
     system("pause");
       return 0;
     }
    void reader(char *path){
            DIR *da;
            struct dirent *ef;
                da = opendir(path);
            while (ef=readdir(da)){
            printf ("%s\n",ef->d_name);
        if(FILE_ATTRIBUTE_DIRECTORY & GetFileAttributes(ef->d_name))
        {

if (strcmp(".",ef->d_name)==0)
continue;


    if (strcmp("..",ef->d_name)==0)
continue;
    reader(ef->d_name);

}
    }
      closedir(da);
}
4

1 に答える 1

1

1)whileループの後readerに呼び出す必要があります。closedir(da);

2)へのすべての呼び出しにreaderは、連結する必要のある絶対パスが必要です。path

ef->d_nameリーダーに電話してから 。

3)デバッグを有効にするには 、呼び出しperrorが失敗した後に呼び出す必要がありreaddirます。

于 2012-04-08T07:46:48.117 に答える