stat 函数 returns 空结构

stat function returns empty struct

studentsDir = opendir(lineValues);
while ((entry = readdir(studentsDir)) != NULL) {
    stat(path, &dirData);
    if (S_ISDIR(dirData.st_mode) && (entry->d_name[0] != '.')
            && (entry->d_name[1] != '.')) {

我正在目录中搜索文件夹。问题是大多数文件夹的 stat returns dirdata 具有空值

代码需要:

  #include <sys/types.h>
  #include <sys/stat.h>
  #include <unistd.h>

函数的原型是:

  int stat(const char *path, struct stat *buf);

所以你还需要:

struct stat dirData;

*path 变量需要是目标文件的实际路径(可以是相对路径或绝对路径)以及文件名。

发布的代码中没有任何内容表明代码中包含上述任何内容。

和 'entry' 是指向 'struct dirent' 的指针,其中当前 file/directory 名称需要在 stat() 使用它之前附加到 'path'。

'entry' 在使用前需要检查以确保它不为 NULL。

struct dirent 包含 d_name[256] 字段将包含 当前文件(或目录)的名称(但不是整个路径) 所以每次代码进入一个(子)目录时, (发布的代码没有这样做) 那么路径需要有来自 d_name[] 的字符串 附加到路径字符串