1

そこで、コンピューター上のファイルを調べて特定のファイルを探す短い C プログラムを作成しました。ディレクトリを取得し、それを開いて周りを見回す単純な関数を作成しました。

int exploreDIR (char stringDIR[], char search[])
{    
    DIR* dir;
    struct dirent* ent;   

    if ((dir = opendir(stringDIR)) == NULL)
    {
         printf("Error: could not open directory %s\n", stringDIR);
         return 0;             
    }

    while ((ent = readdir(dir)) != NULL)
    {
        if(strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
             continue;

        if (strlen(stringDIR) + 1 + strlen(ent->d_name) > 1024)
        {
            perror("\nError: File path is too long!\n");
            continue;
        }     

        char filePath[1024];
        strcpy(filePath, stringDIR);
        strcat(filePath, "/");
        strcat(filePath, ent->d_name);

        if (strcmp(ent->d_name, search) == 0)
        {
            printf(" Found it! It's at: %s\n", filePath);
            return 1;
        }

        struct stat st; 
        if (lstat(filePath, &st) < 0)
        {
            perror("Error: lstat() failure");
            continue; 
        }

        if (st.st_mode & S_IFDIR)
        {
             DIR* tempdir;
             if ((tempdir = opendir (filePath)))
             {
                 exploreDIR(filePath, search);               
             }

         }

    }
    closedir(dir);
    return 0; 
}

ただし、出力を取得し続けます。

Error: could not open directory /Users/Dan/Desktop/Box/Videos
Error: could not open directory /Users/Dan/Desktop/compilerHome

問題は、opendir() が失敗する可能性があるこれらのファイルについて、何が原因なのかわからないことです。どのプログラムでも開いていません。デスクトップに作成した単純なフォルダです。何が問題なのか誰にもわかりませんか?

4

1 に答える 1