linux 用c语言遍历文件系统目录结构
时间: 2024-05-16 17:17:13 浏览: 153
c语言遍历文件夹
在Linux系统中,可以使用C语言编写代码遍历文件系统目录结构,以下是一个示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
void listdir(char *path) {
DIR *dir;
struct dirent *entry;
if (!(dir = opendir(path))) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir))) {
char filename[1024];
struct stat st;
snprintf(filename, sizeof(filename), "%s/%s", path, entry->d_name);
if (entry->d_type == DT_DIR) {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
printf("dir: %s\n", filename);
listdir(filename);
} else {
printf("file: %s\n", filename);
}
}
closedir(dir);
}
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
exit(EXIT_FAILURE);
}
listdir(argv[1]);
return 0;
}
```
这个程序使用了 `opendir()` 和 `readdir()` 函数来打开和读取目录。它使用 `struct dirent` 结构体来存储每个目录项的信息。如果目录项是一个目录,则递归调用 `listdir()` 函数来处理该目录。否则,它将打印文件名。
需要注意的是,这个程序只适用于Linux系统,因为它使用了Linux特有的目录项类型。在其他操作系统上,可能需要使用不同的函数和数据结构来遍历目录。
阅读全文