我正在尝试获取文件夹中除中的文件外的目录数,但无法获得正确的结果。有人帮我解决这个问题吗?尤其是应该向isDirectory()函数发送什么?

int listFilesIndir(char *currDir)
{
    struct dirent *direntp;


    DIR *dirp;
    int x ,y =0 ;


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

    while ((direntp = readdir(dirp)) != NULL)
    {
        printf("%s\n", direntp->d_name);
        x= isDirectory(dirp);
        if(x != 0)
            y++;
    }
    printf("direc Num : %d\n",y );

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

    return 0;
}


int isDirectory(char *path)
{
    struct stat statbuf;

    if (stat(path, &statbuf) == -1)
        return 0;
    else
        return S_ISDIR(statbuf.st_mode);
}

最佳答案

向函数发送一个目录流,并将其视为路径。
Linux和其他一些Unix系统包括一种直接获取此信息的方法:

while ((direntp = readdir(dirp)) != NULL)
{
    printf("%s\n", direntp->d_name);
    if (direntp->d_type == DT_DIR)
       y++;
}

否则,请确保向函数发送正确的详细信息,即。
x= isDirectory(direntp->d_name);

关于c - 如何获取目录中的目录数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15751311/

10-11 20:22