一、实现目标
输入:所要读取的文件目录和文件类型
输出:在此目录下,所有符合类型的文件的文件名。
二、实现背景
在VS中使用CMake编译openCV生成库文件后,需要手动添加附加依赖项,但lib文件太多,不想手动一个一个添加,而希望能够自动生成一个txt文件,该文件包含此目录下所有lib类型文件的文件名。
三、实现代码
// 操作系统:windows 7
// 编译软件:Dev-C++
// 编程语言:c语言
#include <stdio.h>
#include <io.h>
// 使用前需要修改 catalog, type
char catalog[150] = "D:\\opencv345\\opencv\\build\\x86\\vc15\\staticlib"; //文件目录
char type[20] = "lib" ; //文件类型
int main()
{
FILE *fp;
long handle; //句柄
struct _finddata_t fileinfo; //文件信息结构体
char save[150]; //保存文件地址
strcpy(save, catalog);
strcat(save, "\\\\result.txt"); // save = D:\\opencv345\\opencv\\build\\x86\\vc15\\staticlib\\result.txt
char search[150]; ////欲查找的文件,支持通配符
strcpy(search, catalog);
strcat(search, "\\\\*.");
strcat(search, type); // search = D:\\opencv345\\opencv\\build\\x86\\vc15\\staticlib\\*.lib
fp = fopen(save, "w+"); // 打开文件
if (fp==0)
{
printf("文件打开失败!\n");
return 0;
}
handle=_findfirst(search,&fileinfo); //第一次查找
if(-1==handle)
{
fclose(fp);
printf("未找到所需文件。\n");
return -1;
}
fprintf(fp,"%s\n",fileinfo.name); //打印出找到的文件的文件名
while(!_findnext(handle,&fileinfo)) //循环查找其他符合的文件,直到找不到其他的为止
{
fprintf(fp,"%s\n",fileinfo.name);
}
_findclose(handle); //关闭句柄
printf("查找成功。\n");
fclose(fp);
return 0;
}