📅  最后修改于: 2023-12-03 15:30:15.611000             🧑  作者: Mango
在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语言提供了方便的系统调用函数来操作文件和目录。熟练掌握这些函数可以让我们更加方便地处理文件和目录,提高自己的编程效率。