📅  最后修改于: 2023-12-03 15:13:48.365000             🧑  作者: Mango
在C编程中,实现一个简单的LS(列出目录内容)命令是一个常见的任务。LS命令可以显示当前目录下的文件和子目录。
下面是一个使用递归方法实现LS功能的C程序的示例:
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
void ls_recursive(const char* path) {
DIR* dir;
struct dirent* entry;
struct stat info;
if ((dir = opendir(path)) == NULL) {
printf("无法打开目录:%s\n", path);
return;
}
printf("目录:%s\n", path);
while ((entry = readdir(dir)) != NULL) {
char full_path[1024];
snprintf(full_path, sizeof(full_path), "%s/%s", path, entry->d_name);
if (stat(full_path, &info) == -1) {
printf("无法获取文件信息:%s\n", full_path);
continue;
}
if (S_ISDIR(info.st_mode)) {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
printf("子目录:%s\n", entry->d_name);
ls_recursive(full_path);
} else {
printf("文件:%s\n", entry->d_name);
}
}
closedir(dir);
}
int main() {
ls_recursive(".");
return 0;
}
此程序使用了递归的方法列出了指定目录下的所有文件和子目录。它会首先打开指定的目录,然后通过readdir
函数遍历目录中所有的文件和子目录。对于每个文件或子目录,它会判断文件类型,如果是子目录,则递归调用自己来进一步列出子目录中的文件和子目录。
请注意,此示例程序仅用于演示目的,并未添加错误处理。实际上,在您编写更完整的版本时,应该添加更多的错误检查和适当的错误处理。
希望对你有所帮助!