C/C++获取路径下所有图片文件名

C/C++获取路径下所有图片文件名

这里以图片为例,也能是其他文件类型。话不多说,直接开整。

by HPC_ZY


方法

  1. 核心函数
int GetFileName(	char* strDirNames,  // 路径
						int max, 			// 预分配个数(可事先预判文件数量)
						int gain,			// 再分配个数(预分配不够时)
						char* type			// 文件类型
)
{
	int len = strlen(strDirNames) + 4;
	m_nDicomFileNum = 0;

	m_pDicomFileName = (char**)malloc(max * sizeof(char*));
	m_pDicomFileName[m_nDicomFileNum] = (char*)malloc((len + 12) * sizeof(char));

	intptr_t handle = 0;
	struct _finddata_t fileinfo;

	char filepath[50] = "";
	strcpy(filepath, strDirNames);
	strcat(filepath, type);  

	handle = _findfirst(filepath, &fileinfo);
	if (-1 == handle)
		return 0;

	strcpy(m_pDicomFileName[m_nDicomFileNum], strDirNames);
	strcat(m_pDicomFileName[m_nDicomFileNum], fileinfo.name);
	m_nDicomFileNum++;

	while (!_findnext(handle, &fileinfo))
	{
		if (m_nDicomFileNum >= max) {
			max += gain;
			m_pDicomFileName = (char**)realloc(m_pDicomFileName, (max) * sizeof(char*));
		}
		m_pDicomFileName[m_nDicomFileNum] = (char*)malloc((len + 12) * sizeof(char));
		strcpy(m_pDicomFileName[m_nDicomFileNum], strDirNames);
		strcat(m_pDicomFileName[m_nDicomFileNum], fileinfo.name);
		m_nDicomFileNum++;
	}
	_findclose(handle);

	return 1;


}
  1. 调用
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <iostream>
#include<io.h>

using namespace std;

// 偷懒,不想封装成类,所以这两个参数放在全局了
char**m_pDicomFileName = NULL;
int m_nDicomFileNum = 0;

int GetFileName(char* strDirNames, int max, int gain, char* type);

int main()
{
	// 比如我们找png格式的文件
	GetFileName("c:\\users\\写你自己的地址\\data\\", 200 , 50, "*.png");
	cout << m_nDicomFileNum << endl;
	for (int k = 0; k < m_nDicomFileNum; k++) {
		cout << m_pDicomFileName[k] << endl;
	}
}

其他

  1. 也可以用来搜索各种文件
类型写法
jpg*.jpg
png*.png
dicom*.dcm
txt*.txt
名叫test的所有类型test.*
路径下所有文件*.*
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值