📌  相关文章
📜  C程序列出目录中的所有文件和子目录(1)

📅  最后修改于: 2023-12-03 15:30:15.611000             🧑  作者: Mango

C程序列出目录中的所有文件和子目录

在C语言中,可以使用系统调用函数来列出指定目录中的所有文件和子目录。其中,使用的主要函数为opendir()readdir()opendir()函数打开目录,readdir()函数逐一读取该目录下的文件和子目录。

代码实现

下面是列出目录中所有文件和子目录的C程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>

int main(int argc, char *argv[])
{
    DIR *dir;
    struct dirent *d_entry;

    if (argc != 2) {
        printf("Usage: %s <directory>\n", argv[0]);
        return 1;
    }

    dir = opendir(argv[1]);
    if (dir == NULL) {
        printf("Error: Failed to open directory %s\n", argv[1]);
        return 1;
    }

    while ((d_entry = readdir(dir)) != NULL) {
        if (strcmp(d_entry->d_name, ".") != 0 && strcmp(d_entry->d_name, "..") != 0) {
            printf("%s\n", d_entry->d_name);
        }
    }

    closedir(dir);
    return 0;
}
代码解释

该程序首先检查命令行参数,如果没有指定目录,则打印使用方法并返回。之后,程序尝试打开目录,如果打开失败,则打印错误信息并返回。最后,使用readdir()函数逐一读取该目录下的文件和子目录。在读取时,可以通过d_name成员变量获取到该目录项的名称。

需要注意的是,...分别代表当前目录和上级目录,因此在读取目录项时需要将它们排除掉。

总结

C语言提供了方便的系统调用函数来操作文件和目录。熟练掌握这些函数可以让我们更加方便地处理文件和目录,提高自己的编程效率。