在 Ubuntu(Linux)下使用 C 语言编写 opendir / readdir / closedir 的代码示例,下面是一个完整、常用的写法。
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
DIR *dir;
struct dirent *entry;
if (argc < 2) {
printf("用法: %s <目录>\n", argv[0]);
return 1;
}
dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc listdir.c -o listdir
./listdir /home
. 和 ..while ((entry = readdir(dir)) != NULL) {
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
printf("%s\n", entry->d_name);
}
#include <sys/stat.h>
struct stat st;
char path[256];
snprintf(path, sizeof(path), "%s/%s", argv[1], entry->d_name);
stat(path, &st);
if (S_ISDIR(st.st_mode))
printf("[目录] %s\n");
else if (S_ISREG(st.st_mode))
printf("[文件] %s\n");
| 函数 | 作用 |
|---|---|
opendir() |
打开目录 |
readdir() |
读取目录项 |
closedir() |
关闭目录 |
struct dirent |
目录项结构 |
如果你是 C++、递归遍历目录 或 过滤特定文件类型,我也可以继续帮你写。