前言
在处理大量文件时,有一些文件不是我们想要的,我们常常需要动手删除,如果可以自己做一个程序替我们处理这些有固定特征的文件就好了。
参考资料
(21条消息) dirent.h使用详解_怪囧小窝-CSDN博客_dirent.h
其它的参考资料比较碎片,都是百度的,就不放了。
程序使用情况
代码
#include<stdio.h>
#include<string.h>
#include<dirent.h>
/*判断文件是否自己想要的,参数:文件名,后缀名;返回值1,0*/
char not_keep(const char *name,char *suffix){
int i = 0;
int j = 0;
char r_suffix[50];
if(name[0] == '.') return 0;
while(1){/*获得文件名长度*/
if(name[i] == 0) break;
i++;
}
while(1){/*获得后缀名起始位置*/
if(name[i] == '.') break;
i--;
}
while(1){/*提取后缀名*/
r_suffix[j] = name[i];
if(name[i] == 0) break;
j++;
i++;
}
if(strcmp(suffix,r_suffix)==0){
printf("删除:%s\n",name);
return 1;/*准备删掉*/
}
else{
printf("保留:%s\n",name);
return 0;/*应该保留*/
}
}
int main(){
/*1.定义文件需要的结构体类型*************************/
DIR *dp;/*目录相关的状态储存在此*/
struct dirent *dir_file; /*具体文件的状态储存在此*/
char dir_name[300];/*存放目录名*/
/***************************************************/
/*2.打开指定目录************************************/
getcwd(dir_name,sizeof(dir_name));/*获取当前目录,存放在dir_name*/
/*提示,实际操作目录时 ./ 也表示当前目录*/
dp = opendir(dir_name);/*打开目录,返回目录指针,没有就返回空指针*/
/*提示:等效于opendir("./");*/
/***************************************************/
/*3.读取目录下的文件名;删除文件*********************/
/* dir_file = readdir(dp);读取目录下的文件名,若无则返回空指针*/
while((dir_file = readdir(dp)) != NULL){/*指针自动递增*/
if(not_keep(dir_file->d_name, ".txt")){/*dir_file->d_name 是读取到的文件名*/
remove(dir_file->d_name); /*删除文件*/
}
}
/***************************************************/
closedir(dp);/*关闭目录*/
return 0;
}
程序说明
看主函数即可。