读取文件目录下所有特定类型的文件名

实现目标

  输入:所要读取的文件目录和文件类型
  输出:在此目录下,所有符合类型的文件的文件名。

实现背景

  在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;

}

运行结果

在这里插入图片描述
在这里插入图片描述

参考博客

C语言获取文件夹内所有文件名并打印到txt中

猜你喜欢

转载自blog.csdn.net/qq_34801642/article/details/86985987