您的位置:首页 >readdir函数中的文件类型判断
发布于2026-04-23 阅读(0)
扫一扫,手机访问
在C语言的文件系统操作中,readdir函数是遍历目录内容的核心工具。它返回一个指向dirent结构的指针,而这个结构里就藏着识别文件身份的关键信息——d_type成员。直接检查这个成员,就能快速判断出你面对的是普通文件、目录,还是其他特殊类型的文件。

具体来说,d_type可以取以下这些值,每一种都对应着文件系统中的一个特定角色:
光看定义可能不够直观,我们直接来看一段示例代码。下面这个程序演示了如何打开当前目录,并利用readdir和d_type来分类输出其中的所有文件:
#include
#include
#include
#include
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
struct stat file_stat;
char path[1024];
snprintf(path, sizeof(path), "./%s", entry->d_name);
if (stat(path, &file_stat) == -1) {
perror("stat");
continue;
}
switch (entry->d_type) {
case DT_REG:
printf("%s: Regular file\n", entry->d_name);
break;
case DT_DIR:
printf("%s: Directory\n", entry->d_name);
break;
case DT_LNK:
printf("%s: Symbolic link\n", entry->d_name);
break;
case DT_BLK:
printf("%s: Block device\n", entry->d_name);
break;
case DT_CHR:
printf("%s: Character device\n", entry->d_name);
break;
case DT_FIFO:
printf("%s: Named pipe (FIFO)\n", entry->d_name);
break;
case DT_SOCK:
printf("%s: Socket\n", entry->d_name);
break;
default:
printf("%s: Unknown file type\n", entry->d_name);
break;
}
}
closedir(dir);
return EXIT_SUCCESS;
}
这段代码的逻辑很清晰:先打开当前目录,然后通过一个循环,用readdir依次读取每个条目。对于读到的每个条目,程序不仅会查看其d_type,还会调用stat函数来获取更详细的文件信息(虽然本例中未直接使用stat的结果,但这是获取文件元数据的标准做法)。最后,一个switch语句根据d_type的值,打印出对应的文件类型。运行一下,你就能对当前目录下的文件构成一目了然。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9