我只是不明白为什么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/