2016-04-28 8 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

私は窓で作業しています – Sebi95

+0

C++のグローバル名前空間では 'void main()'を使わないでください。 'int main(void)'を使ってください。 – MikeCAT

答えて

0

​​はパスなしでファイル名です。 stat()にファイルの絶対パスまたは相対パスを指定する必要があります。もう1つの方法は、現在のディレクトリを現在のディレクトリに変更することです。

関連する問題