【发布时间】:2021-09-16 00:54:12
【问题描述】:
大家好,我正在编写一个程序 c,它必须读取目录中的文件列表,但是当我打印文件名时,有 2 个文件:“。”和 ”..”。 有什么方法可以防止它在不进行明确检查的情况下读取这两个文件?
我的代码是:
d = opendir("myfolder");
if (d) {
while((dir = readdir(d)) != NULL){
strcpy(path,"myfolder");
strcat(path,"/");
strcat(path,dir->d_name);
printf("File name: %s ",dir->d_name);
}
//... other things like closing dir and file.
【问题讨论】:
-
每个目录都有这两个特殊目录(“当前目录”和“父目录”)。如果您不需要参考它们,只需检查它们并跳过它们。
-
这是标准的当前目录(对于
.)和父目录(对于..)。 -
(另外,
strcpy()和多个低效的strcat()可以用单个snprintf()替换) -
@Shawn 我该怎么做?我的意思是在这种情况下我应该如何使用 snprintf?对不起,我是 C 的新手
-
en.cppreference.com/w/c/io/fprintf 有
snprintf()的文档