为什么会出现这些点(c++dirent.h)

Why does these dots appear (c++ dirent.h)

本文关键字:c++dirent 为什么      更新时间:2023-10-16

我正在尝试使用目录.h显示windows路径中的所有文件和子目录,这是我迄今为止的代码:

void print_dir(char* path, char* subdir)
{
char full_path[MAX_PATH];
concat_path(full_path, path, subdir);
DIR *dir;
struct dirent *ent;
if ((dir = opendir (full_path)) != NULL) {
/* print all the files and directories within directory */
while ((ent = readdir(dir)) != NULL) {
if(is_dir(full_path, ent->d_name)){
printf ("DIR %s\%sn",full_path, ent->d_name);
print_dir(full_path, ent->d_name);
}
else{
printf ("%s\%sn",full_path, ent->d_name);
}
}
closedir (dir);
} else {
/* could not open directory */
perror ("");
}
}

我在目录D:\test上尝试它,该目录有两个子目录,每个子目录中都有一个文件,函数陷入了无限递归,并无限显示......。如果我设置一个条件来检查名称是"."还是"..",如果是什么都不做,那么一切都按计划进行。那么这些点是什么呢?

这些点是目录或至少是指向目录的链接:每个目录至少包含两个子目录:"."answers"..":"."目录指向当前目录本身,".."目录指向父目录。在windows中,这两个目录在资源管理器中都不可见,但您可以使用命令提示符并输入"dir"来显示它们。BTW:在linux系统上,您可以通过在几乎任何shell中输入"ls-a"来显示它们。