2016-04-28 64 views
-1

我試圖從文件夾中獲取所有文件的大小。問題是我從當前目錄更改路徑,它找不到文件的大小。它僅適用於當前目錄,對於項目所在的目錄。如果我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

回答

0

​​是不帶路徑的文件名。您需要提供stat()文件的絕對路徑或相對路徑。另一個選擇是將當前目錄更改爲您正在閱讀的目錄。