c语言读取文件夹下的所有文件 排序
时间: 2023-09-03 19:11:10 浏览: 385
要读取文件夹下的所有文件,可以使用`<dirent.h>`头文件中的`opendir()`和`readdir()`函数。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
int compare(const void *a, const void *b) {
return strcmp(*(char **)a, *(char **)b);
}
int main() {
struct dirent *entry;
DIR *dir = opendir("./"); // 打开当前目录
char **file_names = NULL;
int n = 0;
// 读取目录下的所有文件名
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 如果是普通文件
file_names = realloc(file_names, (n + 1) * sizeof(char *));
file_names[n] = malloc(strlen(entry->d_name) + 1);
strcpy(file_names[n], entry->d_name);
n++;
}
}
closedir(dir);
// 对文件名进行排序
qsort(file_names, n, sizeof(char *), compare);
// 输出排序后的文件名
for (int i = 0; i < n; i++) {
printf("%s\n", file_names[i]);
free(file_names[i]);
}
free(file_names);
return 0;
}
```
上面的代码中,`compare()`函数是用来比较两个文件名的大小关系的,`main()`函数中的代码则是读取文件夹下的所有文件名,并对其进行排序,并输出排序后的文件名。
阅读全文