文档章节

C语言结合windowsApi遍历文件

萧敬
 萧敬
发布于 2014/06/06 18:59
字数 299
阅读 359
收藏 6
点赞 0
评论 0
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
博文 6
码字总数 2153
作品 0
沙坪坝
程序员
runtime实际应用

runtime : 运行时机制首先必须明白的:1.是什么1> runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API2> 平时编写的OC代码, 在程序运行过程中, 其实最终都是转成...

哥特复心 ⋅ 2015/04/19 ⋅ 0

VC++信息安全编程(13)Windows2000/xp/vista/7磁盘扇区读写技术

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

junwong ⋅ 2012/03/09 ⋅ 0

基于VC++6.0 windows程序设计 子窗口输出的诡异问题~~~~~~~~~~!

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

ShiningPig ⋅ 2012/04/08 ⋅ 9

C语言/C++编程学习:获取电脑开机时间

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

小辰带你看世界 ⋅ 05/21 ⋅ 0

C,C++,VC++,MFC之间有什么区别和联系

转载:http://blog.163.com/jackiehowe/blog/static/199491347201242011203225/ C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代。由于它的设计有很多优点,多年...

80后小子 ⋅ 2015/07/03 ⋅ 0

C语言/C++编程新手入门基础知识整理学习

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

小辰带你看世界 ⋅ 04/01 ⋅ 0

Objective-C 语法之集合对象

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

鉴客 ⋅ 2011/10/04 ⋅ 0

Objective-C语法之集合对象的那些事儿(九)

Objective-C语法之集合对象的那些事儿 集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合...

彭博 ⋅ 2012/03/09 ⋅ 0

runtime 运行时机制 完全解读

我们前面已经讲过一篇runtime 原理,现在这篇文章主要介绍的是runtime是什么以及怎么用!希望对读者有所帮助! 首先,第一个问题,1》runtime实现的机制是什么,怎么用,一般用于干嘛?这个问...

哥特复心 ⋅ 2014/08/06 ⋅ 10

PHP简明教程-面向对象基础 2

PHP简明教程 面向对象基础 2 其他的几个魔术方法 方法名 触发时机 参数1 参数2 备注 callStatic 当调用不存在的静态方法的时候自动执行这个方法 函数名 参数(数组) 该方法必须是static slee...

栗子boomboomboom ⋅ 2017/07/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 59分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部