我正在尝试使用语言C列出文件夹的所有文件夹和所有文件。
这是以下代码:
#include <errno.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
int main (int argc, char *argv[])
{
struct dirent *direnp;
struct stat filestat;
DIR *dirp;
if (argc != 2) {
printf("error");
return 1;
}
if ((dirp = opendir(argv[1])) == NULL) {
printf("error");
return 1;
}
while ((direnp = readdir(dirp)) != NULL)
{
stat(direnp->d_name, &filestat);
printf("%s\n", direnp->d_name);
}
return 0;
}
进入cmd后 ./file.c文件夹
此代码的输出为:
folder1
folder2
file1.txt
..
.
file2.txt
我希望删除此部分:
..
.
所以我希望的输出是:
folder1
folder2
file1.txt
file2.txt
如何隐藏3个点?
(编辑:代码中有一些错误。我更正了它)
答案 0 :(得分:6)
只需在while循环中过滤它们:
if (strcmp(direnp->d_name, ".") != 0 && strcmp(direnp->d_name, "..") != 0) {
printf("%s\n", direnp->d_name);
}