新闻  |   论坛  |   博客  |   在线研讨会
文件查找(c语言 findfirst函数,findnext函数)
电子禅石 | 2022-12-23 12:32:31    阅读:8870   发布文章

文件查找(c语言 findfirst函数,findnext函数)


long _findfirst( char *filespec, struct _finddata_t *fileinfo ); 
返回值:
如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。 
参数:
filespec:标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。 
fileinfo :这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。
函数成功后,函数会把找到的文件的信息放入这个结构体中。

int _findnext( long handle, struct _finddata_t *fileinfo ); 
返回值:
若成功返回0,否则返回-1。 
参数:
handle:即由_findfirst函数返回回来的句柄。 
fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。

int _findclose( long handle );
返回值:成功返回0,失败返回-1。
参数: handle :_findfirst函数返回回来的句柄。 
大家看到这里,估计都能猜到个大概了吧?先用_findfirst查找第一个文件,若成功则用返回的句柄调用_findnext函数查找其他的文件,当查找完毕后用,用_findclose函数结束查找。恩,对,这就是正确思路。下面我们就按照这样的思路来编写一个查找C:\WINDOWS文件夹下的所有exe可执行文件的程序。
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
const char *to_search="C:\\WINDOWS\\*.exe"; //欲查找的文件,支持通配符 
int main() { 
long handle; //用于查找的句柄
struct _finddata_t fileinfo; //文件信息的结构体 
handle=_findfirst(to_search,&fileinfo); //第一次查找 
if(-1==handle)return -1; printf("%s\n",fileinfo.name); //打印出找到的文件的文件名 
while(!_findnext(handle,&fileinfo)) //循环查找其他符合的文件,知道找不到其他的为止 

printf("%s\n",fileinfo.name); 

findclose(handle); //别忘了关闭句柄
system("pause");
return 0; 
}


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客