C语言:读取文件目录下所有特定类型的文件名


一、实现目标

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

二、实现背景

  在VS中使用CMake编译openCV生成库文件后,需要手动添加附加依赖项,但lib文件太多,不想手动一个一个添加,而希望能够自动生成一个txt文件,该文件包含此目录下所有lib类型文件的文件名。



三、实现代码

// 操作系统:windows 7
// 编译软件:Dev-C++
// 编程语言:c语言

#include 
#include 

// 使用前需要修改 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语言:读取文件目录下所有特定类型的文件名)