gpt4 book ai didi

c - 我如何在不在 C 中获取 "."和 ".."的情况下获取目录中的所有文件名

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:56 25 4
gpt4 key购买 nike

我正在使用 Linux 系统。

 DIR *dir;
struct dirent *ent;
while ((ent = readdir (dir)) != NULL) {
printf ("%s\n", ent->d_name);
}

我得到了 "." , ".." 和一些文件名。我怎样才能去掉 "."".."?我需要这些文件名以进行进一步处理。ent->d_name 的类型是什么?是字符串还是字符?

最佳答案

阅读 readdir 的手册页,得到这个:

struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all file system types */
char d_name[256]; /* filename */
};

所以 ent->d_name 是一个字符数组。当然,您可以将其用作字符串。

要摆脱 ".""..":

while ((ent = readdir (dir)) != NULL) {  
if (strcmp(ent->d_name, ".") != 0 && strcmp(ent->d_name, "..") != 0 )
printf ("%s\n", ent->d_name);
}

更新

生成的 ent 包含文件名和文件夹名。如果不需要文件夹名称,最好使用 if(ent->d_type == DT_DIR) 检查 ent->d_type 字段。

关于c - 我如何在不在 C 中获取 "."和 ".."的情况下获取目录中的所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com