在C程序中,目录中的文件可以通过使用opendir
和readdir
函数来列出。以下是一个简单的示例代码:
#include <dirent.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
DIR *dir;
struct dirent *entry;
const char *dir_name = "mydir";
// 打开目录
dir = opendir(dir_name);
if (dir == NULL) {
perror("Error: Could not open directory");
return 1;
}
// 遍历目录中的文件
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
// 关闭目录
closedir(dir);
return 0;
}
这个代码示例会列出指定目录中的所有文件。opendir
函数打开指定的目录,返回一个DIR指针。readdir
函数用于读取目录中的条目,返回一个dirent
结构体指针。closedir
函数用于关闭目录。
请注意,这个示例代码只适用于Linux系统,因为dirent.h
头文件是Linux下的,在Windows系统下需要使用windows.h
头文件中的GetDirectoryEntries
函数来遍历目录。
除了使用opendir
和readdir
函数外,您还可以使用glob
函数来遍历目录中的文件。以下是一个示例代码:
#include <glob.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
const char *dir_name = "mydir";
glob_t glob_result;
// 遍历目录中的文件
glob(dir_name, GLOB_RECURSIVE, NULL, &glob_result);
// 遍历匹配的文件
for (int i = 0; i < glob_result.gl_pathc; i++) {
printf("%s\n", glob_result.gl_pathv[i]);
}
// 清空glob_result
globfree(&glob_result);
return 0;
}
这个代码示例使用glob
函数来遍历指定目录中的所有匹配的文件,并将结果存储在glob_result
结构体中。然后,遍历glob_result
结构体中的每个路径,并打印每个文件的名称。
请注意,glob
函数在Windows系统上不支持,需要使用wglob
函数。
领取专属 10元无门槛券
手把手带您无忧上云