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

问题描述:

我试图从文件夹中获取所有文件的大小。问题是我从当前目录更改路径,它找不到文件的大小。它仅适用于当前目录,对于项目所在的目录。如果我wirte 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

我在windows上工作 – Sebi95

+0

您不能在C++的全局命名空间中使用'void main()'。使用'int main(void)'。 – MikeCAT

​​是不带路径的文件名。您需要提供stat()文件的绝对路径或相对路径。另一个选择是将当前目录更改为您正在阅读的目录。