c - 此代码如何列出文件夹中的所有项目?
问题描述
在人的层面上,当一个人打开一个容器时,只要有光,没有东西相互遮挡,人就可以一下子看到一切。
在下面的代码中..打开目录时,没有任何灯光(信息)吗?它不是一下子就能看到一切吗?
它正在阅读 1 个项目,并且因为它已经阅读了它,所以该项目会自动消失?是什么让它消失了?没有“ +1
”被添加到“ count
”..
然后它读取下一个项目,就好像它再次是第一个项目一样。
几乎就像所有东西都堆叠在一起一样,除了顶部的东西之外什么都看不到,一旦它读取顶部的项目,顶部的项目就会消失,下一个项目会被推到顶部读书 ?
是什么推动了它?
DIR *d;
struct dirent *dir;
d = opendir("test/");
while ((dir = readdir(d)) != NULL) {
fputs(dir->d_name, stdout);
fputs("\n", stdout);
}
closedir(d);
解决方案
从readdir()
linux 手册页条目:
readdir() 函数返回一个指向 dirent 结构的指针,该结构表示 dirp 指向的目录流中的下一个目录条目。它在到达目录流的末尾或发生错误时返回 NULL。
所以“+1”在里面readdir()
。在这个级别上,并没有真正被向下或向上推,而是目录列表被爬取,并且一次检查一个项目。
推荐阅读
- linux - 无法读取补充组的文件
- sql - “重复”行 - 如何选择不同的行
- airflow - DAG 在 Airflow UI 上不可见
- mysql - MariaDB - sql 查询性能或优化
- haskell - 使用不同类型的 Monad Transformers 的策略是什么?
- oracle - ORACLE APEX - 设置按钮以填充文本字段
- python - Python。尝试简单的加密并写入文件
- python - 使用 numpy 填充输入向量,一个 4-D 矩阵,用于卷积神经网络 (CNN)
- c# - 如何正确地将我的列表导出到 csv 文档?
- xamarin.forms - 如何使用 Xamarin Forms 在 iOS 中通过 CustomRenderer 渲染更高质量的图像?