我正在尝试使用dirent.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\\%s\n",full_path, ent->d_name);
print_dir(full_path, ent->d_name);
}
else{
printf ("%s\\%s\n",full_path, ent->d_name);
}
}
closedir (dir);
} else {
/* could not open directory */
perror ("");
}
}
我正在目录D:\ test上尝试它,该目录中有两个子目录,每个子目录中都有一个文件,并且函数陷入无限递归并无限显示
\.\.\.\.\.\.
。如果我有条件检查名称是否为“。”或“ ..”,如果不执行任何操作,则所有操作均按计划进行。那么这些点是什么? 最佳答案
这些点是目录或至少是目录的链接:每个目录至少包含两个子目录:“。”和“ ..”:“。”目录指向当前目录本身,而“ ..”目录指向父目录。在Windows上,两个目录在资源管理器中都不可见,但是您可以通过使用命令提示符并输入“ dir”来显示它们。
顺便说一句:在linux系统上,您可以通过在几乎任何shell中输入“ ls -a”来显示它们。