文档章节

C语言结合windowsApi遍历文件

萧敬
 萧敬
发布于 2014/06/06 18:59
字数 299
阅读 359
收藏 6
c
<!-- lang: cpp -->
#include "stdio.h"
#include "string.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"

#define LEN 1024

char g_outFileName[100];
// 深度优先递归遍历目录中所有的文件
BOOL  DirectoryList(LPCSTR Path, char (*files)[50], int *len)
{
	WIN32_FIND_DATA FindData;
	HANDLE hFind;
	static int FileCount = 0;
	char FullPathName[LEN];
	char FilePathName[LEN];
	// 构造路径
	strcpy(FilePathName, Path);
	strcat(FilePathName, "\\*.*");
	//找到要查找的目录资源
	hFind = FindFirstFile(FilePathName, &FindData);
	if (hFind == INVALID_HANDLE_VALUE)
	{
		printf("搜索失败!");
		return 0;
	}
	//遍历找到目录下的文件
	while(::FindNextFile(hFind, &FindData))
	{
		// 过虑.和..
		if (strcmp(FindData.cFileName, ".") == 0 
			|| strcmp(FindData.cFileName, "..") == 0 )
		{
			continue;
		}
		
		// 构造完整路径
		wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
		
		// 输出本级的文件printf("\n%d  %s  ", FileCount, FullPathName);
		// 保存到数组
		strcpy(files[FileCount],FindData.cFileName);		//仅保存的文件名,故需要存放在一个目录下面
		FileCount++;
		*len = FileCount;	//数组长度

		if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			printf("<Dir>");
			DirectoryList(FullPathName,files,len);
		}
		
	}
	return 0;
}

int main( int argc, char** argv ) {
	char files[300][50];
	int len;
	DirectoryList("E:\\项目\\PupilDetect\\video\\xvid\\Result", files, &len);
	printf("len %d\n", len );
	for(int i=0; i<len; i++) {
		IplImage* img = cvLoadImage(files[i]);
		//圆心
		cvCircle( img, cvPoint(100,100), 2, CV_RGB(255,255,255), -1, 8, 0 );
		//半径
		cvCircle(img,cvPoint(100,100),30,cvScalar(255,255,255),2,8,0);
		sprintf(g_outFileName, "F:\\test\\%.5d%s", ++i, ".jpg");//保存的图片名
		if(!cvSaveImage(g_outFileName,img)) printf("Could not save: %s\n", g_outFileName);
		cvReleaseImage(&img);
	}

	// wait for a key
	cvWaitKey(0); 

	return 0;
}

© 著作权归作者所有

共有 人打赏支持
萧敬
粉丝 0
博文 7
码字总数 2153
作品 0
沙坪坝
程序员
VC++信息安全编程(13)Windows2000/xp/vista/7磁盘扇区读写技术

有些时候,我们读取磁盘文件,会被hook.我们读到的可能并非实际的文件。 我们直接读取磁盘扇区获取数据。 实现磁盘数据的读写,不依赖WindowsAPI。 void CSectorEdit2000Dlg::OnView(){Upda...

junwong
2012/03/09
0
0
基于VC++6.0 windows程序设计 子窗口输出的诡异问题~~~~~~~~~~!

用C语言调用windowsAPI写界面,遇到了一个很诡异的问题,不知如何解决~所以来向各位大仙请教!!!!! 创建父窗口,大小固定,无最大化按钮: hwnd=CreateWindow(szAppName,szAppCation, W...

ShiningPig
2012/04/08
826
9
C语言/C++编程学习:获取电脑开机时间

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/21
0
0
C语言/C++编程新手入门基础知识整理学习

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
04/01
0
0
Objective-C 语法之集合对象

集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本...

鉴客
2011/10/04
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RobotFramework之Process

Process Library version: 3.0.4 Library scope: global Named arguments: supported Introduction Robot Framework test library for running processes. This library utilizes Python's s......

海盐宝宝
1分钟前
0
0
easyui的textbox赋值问题,不能用$('#text').val('text');赋值

下面来看看easyui的各种验证框赋值的方式: <input name="text" id="text" class="easyui-numberbox" > <input name="text" id="text" class="easyui-textbox" > <input name="text" id="tex......

无小农
4分钟前
0
0
弹性工作制的魔咒

简评:你找到了一份完美的工作 —— 可以提前离开公司,还可以在晚上从家里回复邮件。既然如此,你为什么还会有那么强的负罪感呢? 或许是弹性工作制魔咒在作祟。 很多享受弹性工作制的人会始...

极光推送
11分钟前
0
0
KAFKA介绍(分布式架构)

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以...

明理萝
17分钟前
0
1
os::NodeHandle::subscribe回调函数绑定对象

void Foo::callback(const std_msgs::Empty::ConstPtr& message){}Foo foo_object;ros::Subscriber sub = handle.subscribe("my_topic", 1, &Foo::callback, &foo_object); 参考: ht......

itfanr
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部