[英]How do I check if file name is a directory or not in C?
我正在使用if(strstr(dir->d_name, ".") == NULL && strstr(dir->d_name, "..")
来检查它是否是一个目录/子目录,但这仍然是打印出一些文件这不是目录...我使用直接结构和DIR。
strstr
searches for a substring inside another string, so it will return a match for every name that contains a single (well, or a double) period. strstr
在另一个字符串中搜索子字符串,因此它将为包含单个(well或double)句点的每个名称返回一个匹配项。
You probably meant to use strcmp
: 你可能打算使用
strcmp
:
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
.. not one of the default root folders ..
Before or after this, you can check if it is a folder or not: 在此之前或之后,您可以检查它是否是文件夹:
if (dir->d_type == DT_DIR)
..
or use stat
. 或使用
stat
。 (Note that d_type
may not be supported by certain file system types.) (请注意,某些文件系统类型可能不支持
d_type
。)
Personally, I like stat() and fstat(). 就个人而言,我喜欢stat()和fstat()。 You then look at the st_mode field of the output with macros like S_ISDIR(m).
然后使用类似S_ISDIR(m)的宏查看输出的st_mode字段。
If you're on Linux, you can use getdents
which include entry type. 如果您使用的是Linux,则可以使用包含条目类型的
getdents
。 Otherwise you'll probably have to use stat
/ lstat
to get type info for every item. 否则,您可能必须使用
stat
/ lstat
来获取每个项目的类型信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.