linux中使用c语言将pic文件夹里面的bmp文件名到二维数组里面
时间: 2024-10-07 22:02:13 浏览: 32
在Linux中使用C语言将`pic`文件夹里的所有`.bmp`文件名存储到二维字符数组里,你需要遍历目录、读取文件名并将其添加到数组中。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#define MAX_FILES 100
#define FILE_NAME_SIZE 50
char **read_bmp_files(const char *dir_path) {
struct dirent *entry;
int file_count = 0;
DIR *dir = opendir(dir_path);
if (!dir) {
perror("Error opening directory");
exit(1);
}
// 初始化二维数组
char **file_array = malloc(MAX_FILES * sizeof(char *));
for (int i = 0; i < MAX_FILES; ++i)
file_array[i] = NULL;
while ((entry = readdir(dir)) != NULL) {
if (strstr(entry->d_name, ".bmp")) { // 检查是否为.bmp文件
char file_name[FILE_NAME_SIZE];
snprintf(file_name, FILE_NAME_SIZE, "%s/%s", dir_path, entry->d_name); // 构造完整文件路径
file_array[file_count++] = strdup(file_name); // 将文件名复制并添加到数组
if (file_count == MAX_FILES) {
printf("Reached maximum number of files (%d), cannot add more.\n", MAX_FILES);
break;
}
}
}
closedir(dir); // 关闭目录句柄
if (file_count == 0) {
printf("No .bmp files found in the directory.\n");
free(file_array[0]); // 如果没找到文件,释放已分配的空间
return NULL;
} else {
file_array[file_count] = NULL; // 添加终止符
return file_array;
}
}
int main() {
char *dir_path = "pic"; // 替换为你需要的文件夹路径
char **files = read_bmp_files(dir_path);
if (files) {
for (int i = 0; files[i]; i++) {
printf("%s\n", files[i]);
}
free(files);
}
return 0;
}
```
阅读全文