如何检查文件名是否为C中的目录?
我使用的是如何检查文件名是否为C中的目录?,c,directory,directory-structure,C,Directory,Directory Structure,我使用的是if(strstrstr(dir->d_name,“.”)=NULL&&strstrstr(dir->d_name,“…”)检查它是否是一个目录/子目录,但这仍然打印出一些不是目录的文件…我使用direct struct和DIR。如果你在Linux上,你可以使用它包含条目类型。否则你可能必须使用它来获取每个项目的类型信息。str搜索其中的子字符串另一个字符串,因此它将为每个包含单句点(well或double)的名称返回匹配项 您可能打算使用strcmp: if (strcmp(dir-
if(strstrstr(dir->d_name,“.”)=NULL&&strstrstr(dir->d_name,“…”)
检查它是否是一个目录/子目录,但这仍然打印出一些不是目录的文件…我使用direct struct和DIR。如果你在Linux上,你可以使用它包含条目类型。否则你可能必须使用它来获取每个项目的类型信息。str
搜索其中的子字符串另一个字符串,因此它将为每个包含单句点(well或double)的名称返回匹配项
您可能打算使用strcmp:
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
.. not one of the default root folders ..
在此之前或之后,您可以检查它是否为文件夹:
if (dir->d_type == DT_DIR)
..
或者使用
stat
(请注意,某些文件系统类型可能不支持d_type
。我个人喜欢stat()和fstat()。然后,使用S_ISDIR(m)等宏查看输出的st_mode字段.您能再显示一点代码吗?根据操作系统的不同,如果您阅读,您将看到它有一个名为d_type
的成员,这是目录项的“文件”类型。有关不使用readdir()时的答案,请参阅
等,或者当您的系统仅提供POSIX规范为struct dirent
定义的最小信息时(即d_name
和d_ino
)。更适合的系统可能会在扩展信息中提供文件类型,该扩展信息直接存储在struct dirent
结构中。