懒人日志第二弹:文件按首位拼音分类进对应文件夹
小说改名改完了
剩下的就是分类
网上找了几种实现方案,都不大满意
用静态字库的方法个人认为浪费内存,且效率不高
动态字库虽然能很好将首位汉字的拼音反编译出来,但是难度太高,做不了@_@
想了一个有点取巧的办法
把静态字库简化,只留下每个拼音字母对应的汉字中内码最大的那个(用strcoll操作的时候第一优先级为拼音首字母的话,第二优先级就是内码)
一个不足之处就是对同音字的处理不是很好,但是总体效果基本满意
贴上代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <direct.h> #include <afxwin.h> #define FileNum 200 //文件数,暂定为200 char *fun(char ce[][3],char inc) { char tec=inc; while(!*ce[tec-'a']){ tec--; } return ce[tec-'a']; } int main() { int i=0,j,n; char inc='a'-1; char mydir[10]={0,'~',0,0,0},cpdir[100]={0}; char ce[26][3]={"鏖","醭","蹉","踱","鲕","鳆","蝈","蠖","","麇","蛞","锊","钼","疟","耦","蹼","逡","箬","羧","鼍","","","鼯","鲟","氲","祚"}; //将字库中每个拼音首字母对应的汉字中内码最大的挑出,对于首字母不存在对应汉字的,将当前位置留空 char sin[FileNum][60]={0}; //存放文件名 CFileFind myfind; BOOL bfind=myfind.FindFile("*.txt"); while(bfind){ bfind=myfind.FindNextFile(); if(myfind.IsDots()||myfind.IsDirectory()) continue; else strcpy(sin[i++],myfind.GetFileName()); } for(j=0;j<26;j++) strcat(sin[i++],ce[j]); n=i; setlocale(LC_ALL,""); qsort(sin,i-1,60,(int(*)(const void *,const void *))strcoll); strcpy(cpdir,"./"); do{ printf("Sort from %c to _?",inc+1); mydir[0]=inc+1; inc=getchar(); //键盘输入分类区间(小写a-z) fflush(stdin); //将输入流清空 mydir[2]=inc; mkdir(mydir); //创建文件夹 j=0; while(!sin[j][0]) j++; while(strcmp(sin[j++],fun(ce,inc))){ //调用fun函数,返回ce中第inc位的有效字符串,若inc位无效,取左侧字符串直至找到有效值 for(i=0;i<26;i++){ if(!strcmp(ce[i],sin[j-1])) break; } if(i!=26) continue; else if(j>=n) break; else{ strcat(cpdir,mydir); strcat(cpdir,"/"); strcat(cpdir,sin[j-1]); if(!rename(sin[j-1],cpdir)) printf("File %s has been successfully moved to ./%s./n",sin[j-1],cpdir); else printf("File %s can't been moved to %s./n",sin[j-1],cpdir); } memset(cpdir,NULL,sizeof(cpdir)); //清空路径 } }while(inc<'z'); return 0; }
程序运行正常,所有文件均能按要求进入新建的对应文件夹中
懒人日志第二弹:文件按首位拼音分类进对应文件夹相关推荐
- 懒人日志:小说批量重命名。。。
小说太多,都是以****.txt(文件名为数字)命名,为了方便寻找便有了将小说重命名的想法 小说名在文件内,手动操作太累,而且打开也慢(单个.txt文件都1M以上) 作为一个懒人,写个能用的程序把小说 ...
- python文件的两种类型进制文件,Python之基于十六进制判断文件类型
#!/usr/bin/env python#-*- coding: utf-8 -*-#@Author : suk importstructfrom io importBytesIO#支持文件类型#用 ...
- 读《大道至简-- 第二章 是懒人造就了方法》 有感
社会的进步.科学的发展,无不是靠这些"懒人". 懒人造就了方法,这句话一点也没错.突然间想想那些聪明的人,大多都是懒人.因为想得多,所以做得少.因为想得多,所以思维得到了锻炼,变得 ...
- Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)
请版主把我之前发的那个帖子删了!因为所有的图全部挂了,所以麻烦版主了-- 安装中出现五国的话就请进入这里看看是那里的错误http://bbs.pcbeta.com/viewthread-863656- ...
- 懒人必备:.NetCore快速搭建ELK分布式日志中心
该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaicsearch.Kibana的缩写,可用于从不同的服务中收集日志 ...
- 《大道至简》第二章——是懒人造就了方法 (读后感)
何为"大道至简"?在周爱民的<大道至简>一书中给出的大道至简的解析是软件工程实践者的思想,它是一种思想,而不是一些招数或者方法. 前几天我把这本书的第一章用伪代码的形式 ...
- 双尾蝎组织动态,针对巴勒斯坦人的攻击第二弹
路过可以关注一下 #APT攻击# 双尾蝎组织动态,针对巴勒斯坦人的攻击第二弹 第一弹之前也写过,可见下 本期仍然强调该组织在20多个国家或地区注册了数百个域名,并感染了数千个受害者. 攻击手法 该组织 ...
- 《大道至简》第二章读后感--是懒人造就了方法
何为"大道至简"?在周爱民的<大道至简>一书中给出的大道至简的解析是软件工程实践者的思想,它是一种思想,而不是一些招数或者方法. "僰蘭道有蜀王兵,亦有神作大 ...
- 大道至简(读后感)第二章 是懒人造就了方法
<华阳国志>中写道 " 僰道有蜀王兵蘭 ,亦有神作大滩江中.其崖崭峻不可破,(冰)乃积薪烧之." 史记中记载战国时李冰凿了一座山搞成一条河.他的伟绩也是够大的! < ...
最新文章
- C++字符串反转(C++11)
- Java 数值的二进制中1的个数和整数次方
- wpf文本框限制输入长度_Excel办公实操,限制输入日期,手机号码,不重复数据的使用...
- java线程池案例_使用Executors 和 ThreadPoolExecutor实现Java线程池案例
- PTA16、列表元素个数的加权和(1) (10 分)
- 持续集成与持续部署宝典Part 4:创建持续部署流水线
- Vue中条件判断 v-if 、v-show
- linux下运行python unitest_Python单元测试unittest代码详解
- 下列软件包有未满足的依赖关系:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- 深圳保障性住房【公租房、安居房、人才房】简单说明
- 无线路由器和有线路由器桥接
- 数据库 实验二 数据库的单表查询和连接查询
- 开源天气时钟项目删减和更新
- IDM+百度网盘提速下载复活版
- 【蓝桥杯】2019年第十届蓝桥杯(个人赛) 大赛介绍、注意事项及赛后总结
- 小程序 wepy+MinUI
- 【二级等保】二级等保安全物理环境要求有哪些?
- CNS数据链测试模拟平台——POCKET
- php快手开发平台api签名
- Docker 学习实战路线