C 统计问题

C trouble with stat

在我的程序中,stat 仅适用于当前目录。谁能帮我解决这个问题。

即使我从 main 传递参数,它也只适用于当前目录。 源路径很好,它正在打印我从主要路径传递过来的正确路径。

    DIR *dr;
    struct dirent *cur;
    struct stat fi;
    long int total_size = 0;
    dr = opendir(source);
    char *name;
    printf("%s\n\n\n", source);
    if (!(dr))
    {
       perror("opendir()");
       return(1);
    }

    while (cur = readdir(dr))
    {
        if(cur->d_name[0] != '.')
        {
            if(stat(cur->d_name, &fi) == -1)
            {
                printf("error \n\n");
            }
            else
            {
                printf("%s  ",cur->d_name);
                printf("%ld  ",fi.st_blocks);
                total_size = total_size + fi.st_blocks;
            }
        }
    }
    printf("\n\ntotal_size = %ld \n", total_size);
    printf("\n\n\n");
    return 0;

}

cur->d_name只包含文件名。

获取当前目录外的'stat()',

需要以路径字符串作为前缀。

还需要检查是否从 readdir() 返回的结构 是文件或子目录。

主要问题是 stat 需要文件路径,但 d_name 只是文件名。您可以找到如何将 statd_name

一起使用的工作示例