我只是不明白为什么readdir()会将“.”列为目录中的一个文件。
下面是我的代码片段

while((dir = readdir(d)) != NULL)
{
    printf("%s \n", dir->d_name);  //It displayed .. once and rest of the time file names
}

最佳答案

...表示当前目录和父目录,并且存在于所有目录中(请参见下面的脚注)。readdir()不会过滤掉它们,因为它们是目录中的有效条目。你可以自己做以下的过滤。

while((dir = readdir(d)) != NULL)
{
    if (strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0) {
        continue;
    }
    printf("%s \n", dir->d_name);
}

注意:从技术上讲,susv3并不要求...实际存在于所有目录中,而是要求os实现在路径中遇到时正确地解释它们。

关于c - 为什么readdir()将“..”列为文件之一?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19171429/

10-12 15:42