C语言学习:文件操作--删除指定后缀文件

前言

在处理大量文件时,有一些文件不是我们想要的,我们常常需要动手删除,如果可以自己做一个程序替我们处理这些有固定特征的文件就好了。

参考资料

(21条消息) dirent.h使用详解_怪囧小窝-CSDN博客_dirent.h

其它的参考资料比较碎片,都是百度的,就不放了。

程序使用情况

C语言学习:文件操作--删除指定后缀文件_第1张图片

 

代码

#include
#include
#include

/*判断文件是否自己想要的,参数:文件名,后缀名;返回值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;
}

程序说明

        看主函数即可。

你可能感兴趣的:(C语言,学习)