我正在尝试从文件夹中获取所有文件的大小。问题是我从当前目录更改路径,它找不到文件的大小。它仅适用于当前目录,适用于项目所在的目录。如果我真的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);
}
答案 0 :(得分:0)
de->d_name
是没有路径的文件名。您需要向stat()
提供文件的绝对路径或相对路径。另一个选择是将当前目录更改为您正在阅读的目录。