文件按时间排序的一个实现思路
2016-08-27 16:51
387 查看
那你今天算是遇到"高手"了~~~ B) #define MAKELONG(Hi, Lo) (((long)Hi << 16) | (long)Lo) #define MAX_FILENUM 2000 // 自定义文件列表数据结构. typedef struct tagFileListData { char m_sName[8]; // 文件名(不含结束符). char m_sExt[4]; // 扩展名(不含结束符). long m_lDate; // 文件日期时间(DOS格式). long m_lSize; // 文件大小(字节). uchar m_ucAttrib; // 文件属性. } FILELISTDATA; int g_nOrder = 1; FILELISTDATA ListData[MAX_FILENUM];// 线性数组缓冲区,便于使用库函数qsort()排序. FILELISTDATA *pFileListData = ListData; struct find_t Find; char szPath[_MAX_PATH], szDir[_MAX_DIR]; char szName[_MAX_FNAME], szExt[_MAX_EXT]; uint nAttrib; int nNum; // 要查找的路径. strcpy(szPath, "D:\C700\BIN\*.*"); // 初始化文件个数计数器. nNum = 0; if(!_dos_findfirst(szPath, nAttrib, &Find)) { if(Find.attrib & nAttrib) { // 分解文件名. _splitpath(Find.name, szDrive, szDir, szName, szExt); // 填充文件数据结构. memcpy(pFileListData->m_sName, szName, strlen(szName)); memcpy(pFileListData->m_sExt, szExt, strlen(szExt)); pFileListData->m_lDate = MAKELONG(Find.wr_date, Find.wr_time); pFileListData->m_lSize = Find.size; pFileListData->m_ucAttrib = Find.attrib; // 增加文件计数器. nNum ++; pFileListData ++; } while(!_dos_findnext(&Find)) { if(Find.attrib & nAttrib) { // 分解文件名. _splitpath(Find.name, szDrive, szDir, szName, szExt); // 填充文件数据结构. memcpy(pFileListData->m_sName, szName, strlen((szName)); memcpy(pFileListData->m_sExt, szExt, strlen(szExt)); pFileListData->m_lDate = MAKELONG(Find.wr_date, Find.wr_time); pFileListData->m_lSize = Find.size; pFileListData->m_ucAttrib = Find.attrib; // 增加文件计数器. nNum ++; pFileListData ++; // 如果超过最大个数则退出. if(nNum >= MAX_FILENUM) break; } } } // 按照时间排序, 执行完毕ListData[]数组中的文件已经完成排序. // 照此方法还可以按照文件名等属性排序. qsort(ListData, nNum, sizeof(FILELISTDATA), SortByDate); // 比较函数. // 按照文件生成的日期和时间排序. int _far SortByDate(FILELISTDATA *pData1, FILELISTDATA *pData2) { int nRet; if(pData1->m_lDate < pData2->m_lDate) nRet = -1; else if(pData1->m_lDate > pData2->m_lDate) nRet = 1; else nRet = 0; // g_nOrder是个全局变量,取值为1时为升序,-1为降序. return(g_nOrder * nRet); } 使用MSC6.0或MS C/C++7.0编译,borland系列的自己改函数名吧~~~
相关文章推荐
- 获取一个索引文件频率最高的Term(可实现热点关键字的一个思路之一)
- C#实现对指定文件夹中文件按修改时间排序
- C#实现对指定文件夹中文件按修改时间排序
- 利用Dataview实现搜索指定目录下的所有文件,以指定的条件排序(可以按文件名升降序,最后修改时间升降序)
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表实现文件C语言
- 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 以上的文章是我解决这样一个问题时候的大致的思路: 把Matlab读取二进制文件的函数变成VBA读取二进制文件,实现同样的功能
- 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
- 实现一个排序,要求时间效率O(n)
- 实现一个算法,对公司员工年龄进行排序,时间效率要求O(n)
- ls实现列文件按时间排序
- python实现按创建时间对文件排序
- ls实现列文件按时间排序
- python按时间排序目录下的文件实现方法
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- 【一个批量计算的调度系统的设计与实现】如果需要对成千上万的网络抓包数据文件在规定的时间内进行解析,应该怎么做?
- C#实现对指定文件夹中文件按修改时间排序
- lucene实现 某段时间内 多个存储字段 多关键字的查询 并且加入排序规则 思路
- linux如何看一个文件夹内(包括子文件夹内)n天内修改了的文件,并且按修改时间排序(最下方是最新的)