在 Ubuntu(Linux)下使用 C 语言编写 opendir / readdir / closedir 的示例代码,核心是使用 <dirent.h> 和 <sys/types.h>。
下面给你一个完整、可直接编译运行的示例。
listdir.c)#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
DIR *dir;
struct dirent *entry;
if (argc != 2) {
fprintf(stderr, "用法: %s <目录路径>\n", argv[0]);
return 1;
}
dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir 失败");
return 1;
}
printf("目录内容: %s\n", argv[1]);
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc listdir.c -o listdir
./listdir /home
#include <sys/stat.h>
struct stat st;
stat(entry->d_name, &st);
if (S_ISDIR(st.st_mode))
printf("[目录] %s\n");
else
printf("[文件] %s\n");
⚠️ 注意:如果不在目标目录中运行,需要拼接完整路径。
| 函数 | 作用 |
|---|---|
opendir() |
打开目录,返回 DIR* |
readdir() |
读取目录项 |
closedir() |
关闭目录 |
dirent->d_name |
文件名 |
如果你想要:
可以继续告诉我。