为什么会出现这些点(c++dirent.h)
Why does these dots appear (c++ dirent.h)
我正在尝试使用目录.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"来显示它们。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 为什么在全局范围内使用"extern int a"似乎不行?
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 为什么会发生堆损坏
- 为什么使用 "this" 指针调用派生成员函数?
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么比较运算符如此快速
- 为什么 Serial.println(<char[]>);返回随机字符?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 为什么不;名字在地图上是按顺序排列的吗
- 我的字符计数代码计算错误.为什么
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 为什么 std::unique 不调用 std::sort?
- 为什么 dirent.h 在 sshfs 驱动器上不起作用?
- 为什么会出现这些点(c++dirent.h)