`
ssun125
  • 浏览: 44596 次
文章分类
社区版块
存档分类
最新评论

Windows下C语言查找文件例子

 
阅读更多

Windows下C语言查找文件例子

// 2_4.cpp : Defines the entry point for the console application.
//
//========================================================================= 
// 作者   : 欧阳文光
// 邮箱   : ssun125@163.com	
// 博客   : http://blog.csdn.net/ssun125
// 描述   : c语言文件查找
// 使用   : cmd下search.exe 目录 文件(可以用通配符*、?)(如:search.exe E: *.java)
// 日期   : 2013年01月25日
//=========================================================================

#include "stdafx.h"
#include <STDIO.H>
#include <MALLOC.H>
#include <STRING.H>
#include <windows.h>

//使用链表保存每个找到的文件夹
typedef struct DirList{
	char name[256];
	DirList * next;
} *LpDirList;

DirList * first, * last; 

//往链表中添加节点
void add(char * name)
{
	DirList * newDir = (LpDirList)malloc(sizeof(DirList));
	strcpy(newDir->name, name);
	newDir->next = NULL;
	last->next = newDir;
	last = newDir; 
}

void loopFind(char * dir, char * filename)
{
	//printf("层次遍历文件夹...\n");
	char searchName[256] = {0};
	char nextDir[256] = {0};	
	strcpy(searchName, dir);
	strcat(searchName, "\\**");
	//保存找到的文件或文件夹的信息的结构体
	WIN32_FIND_DATA findData;
	HANDLE hFindFile = FindFirstFile(searchName, &findData);
	while (FindNextFile(hFindFile, &findData))
	{
		if(findData.cFileName[0] == '.') continue;
		if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			strcpy(nextDir, dir);
			strcat(nextDir, "\\");
			strcat(nextDir, findData.cFileName);			
			add(nextDir);					
			memset(nextDir, 0x00, sizeof(nextDir));
		}		
	}
	//查找符合条件的文件,并输出
	char nextFileName[256] = {0};
	memset(searchName, 0x00, sizeof(searchName));
	strcpy(searchName, dir);
	strcat(searchName, "\\");
	strcat(searchName, filename);
	hFindFile = FindFirstFile(searchName, &findData);
	while (FindNextFile(hFindFile, &findData))
	{
		strcpy(nextFileName, dir);
		strcat(nextFileName, "\\");
		strcat(nextFileName, findData.cFileName);
		printf("%s\n", nextFileName);							
	}

} 

void search(char * dir, char * filename)
{
	printf("开始搜索...\n");
	first = (LpDirList)malloc(sizeof(DirList));
	strcpy(first->name, dir);
	first->next = NULL;
	last = first;
	while (first != NULL)
	{
		loopFind(first->name, filename);
		first = first->next;
	}
}

int main(int argc, char* argv[])
{
	if(argv[1]==NULL || argv[2]==NULL)
	{ 
		printf("请输入目录或文件!\n");
		return 0;
	}
	search(argv[1], argv[2]);
	return 0;
}

结果截图:



分享到:
评论

相关推荐

    C语言获得系统用户名

    在C语言中获取系统用户名是一项基础但重要的任务,它通常涉及到操作系统...同时,这也是学习C语言深入理解和实践操作系统接口的一个好例子。理解这些原理对于提升C语言编程能力,尤其是系统级编程技能,具有重要意义。

    C语言K近邻分类器KNN,有5个简单的例子供学习.zip

    2. `knn.dll`:这是一个动态链接库文件,通常用于Windows系统,它可能是C语言编译后的KNN算法实现,可以被其他程序调用。使用DLL可以让不同程序共享相同的代码,节省内存资源。 3. `wine.mat`:MATLAB数据文件,...

    windows系统文件详解.txt

    ### Windows系统文件...以上列举的只是Windows系统文件中的一部分例子。每种类型的文件都承担着特定的角色,共同构成了Windows操作系统的完整功能。了解这些文件的作用和应用场景有助于更好地管理和维护计算机系统。

    C语言实现的动态链接封装实例(包含linux系统和windos系统的两个例子/dll库封装/so库封装)

    本篇将详细介绍C语言在Windows和Linux系统下如何实现动态链接库的封装以及如何进行调用。 首先,我们来看看Windows系统下的DLL封装。DLL文件包含了可被其他程序调用的函数或数据。在C语言中,创建DLL通常涉及以下几...

    搜索目标路径下指定类型文件工具源码C++

    这个工具的主要功能是能够在一个给定的目标路径下,快速查找并定位特定类型的文件,如.txt、.ini或.dll文件。这对于开发者来说尤其有用,因为它们经常需要快速定位项目中的特定文件或配置文件。 首先,我们来深入...

    C语言程序设计(第2版)-2期 拓展知识2-2 文件包含.pdf

    编译器首先会在当前目录下查找文件,如果找不到,再按照系统头文件的搜索路径查找。 文件包含有以下几点需要注意: - **文件路径**:在使用双引号包含时,可以直接指定文件的完整路径,如 `#include "/windows/...

    C语言课程设计案例精编 [姜灵芝] 源代码

    3. "文件查找工具":模拟Windows的文件搜索功能,实现基于文件名的搜索。这会涉及文件系统遍历和字符串匹配算法。 4. "截图工具":使用C语言实现屏幕截图功能,涉及图形用户界面(GUI)编程和图像处理。 5. "记事本...

    C语言教程及100例经典

    CHM(Compiled Help Manual)是一种Windows下的帮助文件格式,集成了目录、索引和搜索功能,便于查阅和学习。在阅读过程中,学习者应注意理论与实践相结合,多动手编写代码,逐步提升编程能力。

    C语言经典算法100例

    从【压缩包子文件的文件名称列表】"c语言实用程序设计100例"来看,这可能是一系列具体的应用示例,覆盖了C语言在实际问题解决中的各种应用场景,如文件操作、字符串处理、内存管理、数学计算等。每一道题目都可能...

    VC读写ini配置文件代码例程

    这个例子中,如果`config.ini`文件的`Settings`节下有`Language`键,那么它的值会被读取并打印出来。如果没有,则会使用`English`作为默认值。 除了Windows API,还可以使用第三方库如TinyXML、pugixml等来处理更...

    C语言书打包下载

    - 实例解析:通过实际编程例子,深入解析C语言的语法和编程技巧,提高解决问题的能力。 - 算法与数据结构:学习常见的排序算法(冒泡、选择、插入、快速等)、查找算法以及链表、树、图等数据结构。 7. **C语言...

    C语言基础教程

    - **Hello World程序**:通过编写简单的“Hello World”程序,让初学者了解C语言的基本语法结构,包括文件包含指令`#include`、主函数`int main()`、输出函数`printf`等。 #### 二、基本数据类型与操作 - **数据...

    c语言 学生管理系统

    【描述】:这个学生管理系统是用C语言编写的,它在GCC(GNU Compiler Collection)环境下可以顺利编译并运行,同时也兼容VC(Visual C++)编译器,这表明它的代码遵循了标准C,并且具有良好的平台兼容性。...

    c语言 编程 turboc2.0

    6. **DOS环境**:Turboc2.0主要用于DOS操作系统,因此编写的程序默认运行在DOS环境下,如果需要在Windows或其他操作系统上运行,可能需要进行相应的兼容性处理。 7. **代码优化**:Turboc2.0的编译器有较强的代码...

    C语言实现烟花绽放以及bgm播放

    综上所述,这个项目涵盖了C语言基础、图形界面设计、音频处理、多线程编程等多个方面,是学习和实践C语言及计算机图形学的好例子。通过此项目,开发者不仅可以提升编程技能,还能对软件工程的各个方面有更深入的理解...

    C语言经典教材

    - Windows系统下,双击程序图标时也会自动装入内存。 - **程序构成**: 可执行文件主要包括二进制编码的机器指令和数据。 **1.2 编程语言** - **机器语言**: 由二进制码组成,计算机可以直接识别和执行。 - 特点...

    Windows程序设计(Charles Petzold)

    这个文件将帮助读者进一步提升在Windows环境下的编程能力,理解更复杂的应用场景和系统级别的交互。 "code"目录很可能包含了书中的示例代码,这对于实践和理解理论知识至关重要。通过这些代码,读者可以直观地看到...

    jna调用dll的例子,包含dll文件和详细说明

    6. **注意事项**:在Windows上,DLL文件需要与Java应用程序在同一目录下,或者在系统的PATH环境变量中指定其位置。其他操作系统如Linux或MacOS可能需要.so文件(共享对象),而不是.dll。 7. **优点与局限性**:JNA...

    基于c语言的简单穷举水仙花数.zip

    这两个文件很可能是C语言编写的源代码,分别实现了查找水仙花数的不同版本或优化。源代码文件通常以“.c”为扩展名,它们包含了可读的文本指令,这些指令会被C编译器转化为机器可执行的二进制代码。在这些代码文件中...

Global site tag (gtag.js) - Google Analytics