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

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

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

by HPC_ZY


方法

  1. 核心函数
int GetDicomFileName(	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 GetDicomFileName(char* strDirNames, int max, int gain, char* type);

int main()
{
	// 比如我们找png格式的文件
	GetDicomFileName("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.*
路径下所有文件 *.*

猜你喜欢

转载自blog.csdn.net/xsz591541060/article/details/105972690