我正在为课程编写一个程序,我想知道一些代码的输出.我有一些像这样的代码:
DIR* dir = opendir(".");
struct dirent* reader;
while ((reader = readdir(dir)) != NULL)
{
//print the name of the path found by reader.
}
Run Code Online (Sandbox Code Playgroud)
现在这个工作正常,但我注意到前两个列表总是:
.
..
//rest of files here
Run Code Online (Sandbox Code Playgroud)
现在我假设第一个点.只是当前目录的名称,但第二个双点是什么?我知道cd ..让你进入文件层次结构,但我不知道为什么在读取子目录名时输出.
我担心的原因是因为我想递归遍历所有文件,但是如果我通过它..,那里的第一个目录名称.会导致循环.那我怎么能避免这个呢?
这..是父目录.除非您在文件系统根目录,否则它与根目录相同.
基本上你想检查你的dir变量是否等于.或者...如果是,则跳过该目录.
您可以通过将该检查放入while循环中,或者从您的目录数组中过滤掉这两个目录来实现此目的.
哦,请确保您不会意外跳过以...开头的目录.,因为这些目录仍然是有效的.确保整个目录名称是.或...
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |