C语言实现将某个文件目录下的所有文件的名称存入字符串数组,最简单的编程代码
时间: 2024-09-11 10:01:29 浏览: 36
在C语言中,要实现将某个文件目录下的所有文件名称存入字符串数组,可以使用`dirent.h`库中的函数。下面是一个简单的示例代码,它演示了如何遍历指定目录下的所有文件,并将文件名存储到字符串数组中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
int main() {
DIR *dir;
struct dirent *entry;
char *names[256]; // 假设目录下最多有256个文件
int count = 0;
// 打开目录
dir = opendir(".");
if(dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
// 遍历目录
while ((entry = readdir(dir)) != NULL) {
// 跳过"."和".."目录项
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// 分配内存并复制文件名到names数组
names[count] = (char *)malloc(strlen(entry->d_name) + 1);
if(names[count] == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
strcpy(names[count], entry->d_name);
count++;
// 限制数组大小
if (count >= 256) {
break;
}
}
// 关闭目录
closedir(dir);
// 打印所有文件名
for (int i = 0; i < count; i++) {
printf("%s\n", names[i]);
free(names[i]); // 释放分配的内存
}
return 0;
}
```
这段代码首先打开了当前目录("."),然后使用`readdir`函数逐个读取目录项。对于每个目录项,代码会检查是否为当前目录或上级目录的特殊项("."和".."),如果是普通文件名,则将其复制到动态分配的字符串数组`names`中。在遍历结束后,代码打印所有文件名,并释放之前分配的内存。
注意,这个代码示例假设目录中的文件数量不会超过256个,且没有进行详尽的错误检查。在实际应用中,你可能需要根据实际情况对错误处理和资源管理进行扩展和改进。
阅读全文