2

我试图通过使用 dirent.h 标头来获取目录中文件的大小。然而

stat(ent->d_name, &statbuf)

总是返回-1,我无法正确获得大小。可能是什么原因?

4

2 回答 2

8

d_name包含该目录中文件的名称。stat想要一个包含目录部分的名称,除非它是当前目录。

制作一个包含文件完整路径的临时字符串d_name

编辑:样本

char const * DirName = "/tmp";
....
char * FullName = (char*) malloc(strlen(DirName) + strlen(ent->d_name) + 2); 
strcpy(FullName, DirName);
strcat(FullName, "/");
strcat(FullName, ent->d_name);
stat(FullName, &statbuf);
free(FullName);
于 2011-04-01T14:38:38.700 回答
1

我使用 C++,我认为上面的代码可以工作,但它没有,因为它仍然需要从 void 到 char* 的转换:

char *fullName = (char*) malloc(strlen(path) + strlen(entry->d_name) + 2);

希望这可以帮助某人:)

于 2012-06-29T14:41:45.323 回答