c语言获取文件夹下所有文件
时间: 2023-07-27 18:07:35 浏览: 95
你可以使用C语言中的标准库函数dirent.h来获取一个文件夹下的所有文件。下面是一个简单的例子:
```c
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir;
struct dirent *ent;
// 打开文件夹
dir = opendir("./my_folder");
// 读取文件夹下的文件
while ((ent = readdir(dir)) != NULL) {
// 忽略 . 和 ..
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
continue;
}
printf("%s\n", ent->d_name);
}
// 关闭文件夹
closedir(dir);
return 0;
}
```
这个例子会打印出my_folder文件夹下的所有文件名。你可以根据需要修改代码来实现你的要求。
相关问题
c语言 删除文件夹下的所有文件
C语言是一种面向过程的编程语言,在文件操作方面也有着比较丰富的函数库。删除文件夹下的所有文件可以使用C语言中的函数,具体步骤如下:
1.使用C语言中的opendir()函数打开待删除文件夹,该函数原型为: DIR *opendir(const char *dirname)。这个函数返回一个指向DIR结构体类型的指针。
2.使用C语言中的readdir()函数循环获取文件夹下的所有文件名,该函数原型为:struct dirent *readdir(DIR *dirp)。这个函数返回一个指向dirent结构体类型的指针,它包含了文件名等信息。
3.使用C语言中的remove()函数删除每个文件,该函数原型为:int remove(const char *filename)。这个函数返回一个整型值,如果删除失败则返回-1。
4.循环删除每个文件后,使用C语言中的closedir()函数关闭文件夹,该函数原型为:int closedir(DIR *dirp)。
完整的C语言程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main()
{
DIR *dir;
struct dirent *ent;
char *path = "./folder"; //待删除文件夹的路径
if ((dir = opendir(path)) != NULL) {
while ((ent = readdir(dir)) != NULL) {
if (ent->d_type == DT_REG) { //只删除普通文件
char file_path[100];
sprintf(file_path, "%s/%s", path, ent->d_name);
remove(file_path);
}
}
closedir(dir);
} else {
printf("Error opening directory.");
exit(EXIT_FAILURE);
}
return 0;
}
这段程序首先使用opendir()函数打开待删除文件夹,然后循环使用readdir()函数获取每个文件的文件名并删除,最后使用closedir()函数关闭文件夹。在删除文件时需要注意,只删除普通文件,不要删除文件夹本身。
C语言遍历文件夹下的所有文件
可以使用 dirent.h 头文件中的 readdir() 函数和 stat() 函数实现。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
void traverseDir(char *dir) {
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if ((dp = opendir(dir)) == NULL) {
fprintf(stderr, "Cannot open directory: %s\n", dir);
return;
}
chdir(dir);
while ((entry = readdir(dp)) != NULL) {
lstat(entry->d_name, &statbuf);
if (S_ISDIR(statbuf.st_mode)) {
if (strcmp(".", entry->d_name) == 0 || strcmp("..", entry->d_name) == 0) {
continue;
}
printf("Directory: %s\n", entry->d_name);
traverseDir(entry->d_name);
} else {
printf("File: %s\n", entry->d_name);
}
}
chdir("..");
closedir(dp);
}
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "Usage: %s directory_name\n", argv[0]);
exit(1);
}
traverseDir(argv[1]);
return 0;
}
```
传入要遍历的目录路径作为参数,通过 opendir() 函数打开目录,然后使用 readdir() 函数遍历目录下的所有文件夹和文件,使用 stat() 函数获取每个文件的信息,并根据 st_mode 判断是文件夹还是文件,进而递归遍历文件夹中的文件。最后使用 closedir() 函数关闭目录。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)