我更改列出文件的路径时出现问题

时间:2016-04-28 22:46:23

标签: c++ file path size

我正在尝试从文件夹中获取所有文件的大小。问题是我从当前目录更改路径,它找不到文件的大小。它仅适用于当前目录,适用于项目所在的目录。如果我真的d = opendir(“。”)正在工作,但只是那样,我想改变路径。谢谢 代码:

#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>

void main()
{
    DIR *d;
    struct dirent *de;
    struct stat buf;
    int exists;
    int total_size;

    d = opendir("C:\\MinGWStudio\\Templates");
    if (d == NULL) {
        perror("prsize");
        exit(1);
    }

    total_size = 0;

    for (de = readdir(d); de != NULL; de = readdir(d)) {
        exists = stat(de->d_name, &buf);
        if (exists < 0) {
            fprintf(stderr, "Couldn't stat %s\n", de->d_name);
        }
        else {
            printf("%s ", de->d_name);
            printf("%d \n", buf.st_size);
            total_size += buf.st_size;
        }
    }
    closedir(d);
    printf("%d\n", total_size);
}

1 个答案:

答案 0 :(得分:0)

de->d_name是没有路径的文件名。您需要向stat()提供文件的绝对路径或相对路径。另一个选择是将当前目录更改为您正在阅读的目录。