c - 获取目录中文件的大小

标签 c dirent.h

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

stat(ent->d_name, &statbuf)

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

最佳答案

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);

关于c - 获取目录中文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514842/

相关文章:

困惑的时间线无法及时发出信号

c - 为什么我的函数没有运行并出现无效内存错误?

c - 程序没有做它应该做的事 - C

c - 为什么我的prog无法识别pronic号码?

c - stat 为目录中的文件输出错误的值

c++ - 使用 C++ 删除旧文件

c++ - 使用复合赋值的结果作为左值

C readdir 和 struct dirent 分配

c++,列出所有文件,Windows 上的 dirent.h

c++ - 在 Linux 下区分共享驱动器上的文件和文件夹