请教关于标准C中findfirst()函数的用法!谢谢

本文讨论了findfirst()函数在Turbo C中的使用方法及其参数含义,并提供了简单的示例代码。该函数用于搜索磁盘目录并获取匹配模式的第一个文件。

http://www.9php.com/FAQ/cxsjl/c/2008/02/8213744111969.html

请教关于标准C中findfirst()函数的用法!谢谢

[2008-2-12 18:21:37] [来源: 百家电脑学院] [我要投稿]

2004-10-26 11:14 mimosayuan
请教关于标准C中findfirst()函数的用法!谢谢

请教标准C中findfirst()用法,这个函数里的参数都代表什么意义?能帮忙解释一下吗?谢谢!如果有具体实例更加感谢!

2004-10-26 11:22 FH
请教关于标准C中findfirst()函数的用法!谢谢

标准C里没找着,帮不上

2004-10-26 11:29 mimosayuan
请教关于标准C中findfirst()函数的用法!谢谢

我找到了,是这样的
函数名: findfirst, findnext 
功  能: 搜索磁盘目录; 取得下一个匹配的findfirst模式的文件 
用  法: int findfirst(char *pathname, struct ffblk *ffblk, int attrib); 
int findnext(struct ffblk *ffblk); 

我想要做的是找到匹配*.tmp的文件,然后把匹配的文件删除,但是我不知道具体该怎么用,还有删除文件应该用什么方法呢?能帮忙看一下吗?谢谢了!

2004-10-26 12:28 aero
请教关于标准C中findfirst()函数的用法!谢谢

这个不是标准C函数吧?

2004-10-26 13:09 FH
请教关于标准C中findfirst()函数的用法!谢谢

你还是用ftw吧,回调方式的,这个省事

2008-2-6 11:26 bheric
原帖由 mimosayuan 于 2004-10-26 11:29 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=2882364&ptid=432048][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
我找到了,是这样的
函数名: findfirst, findnext 
功  能: 搜索磁盘目录; 取得下一个匹配的findfirst模式的文件 
用  法: int findfirst(char *pathname, struct ffblk *ffblk, int attrib); 
int findne ... [/quote]

findfirst()和findnext()这两个函数是搭配使用的
path是文件路径
ffblk为指定的保存文件信息的一个结构,定义如下: 
    ┏━━━━━━━━━━━━━━━━━━┓ 
    ┃struct ffblk                        ┃ 
    ┃{                                   ┃ 
    ┃ char ff_reserved[21]; /*DOS保留字*/┃ 
    ┃ char ff_attrib;       /*文件属性*/ ┃ 
    ┃ int  ff_ftime;        /*文件时间*/ ┃ 
    ┃ int  ff_fdate;        /*文件日期*/ ┃ 
    ┃ long ff_fsize;        /*文件长度*/ ┃ 
    ┃ char ff_name[13];     /*文件名*/   ┃ 
    ┃}                                   ┃ 
    ┗━━━━━━━━━━━━━━━━━━┛ 
     attrib为文件属性,由以下字符代表 
    ┏━━━━━━━━━┳━━━━━━━━┓ 
    ┃FA_RDONLY 只读文件┃FA_LABEL  卷标号┃ 
    ┃FA_HIDDEN 隐藏文件┃FA_DIREC  目录  ┃ 
    ┃FA_SYSTEM 系统文件┃FA_ARCH   档案  ┃ 
    ┗━━━━━━━━━┻━━━━━━━━┛ 
:em03: 
int main(void)
{
struct ffblk ff;
int done;
done=findfirst("*.bmp",&ff,0);
while(!done)
{
done=findnext(&ff);
printf("%s",ff.ff_name);
}
return 0;
}
2008-2-6 13:05 zszyj
[quote]原帖由  mimosayuan 于 2004-10-26 11:14 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=2882284&ptid=432048][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
请教标准C中findfirst()用法,这个函数里的参数都代表什么意义?能帮忙解释一下吗?谢谢!如果有具体实例更加感谢! [/quote]
这不是标准C的函数, 是win sdk的函数, 作用是搜索目录下的第一个文件,要和FindNext配合使用. 
UNIX下对应的函数是glob.

2008-2-6 13:30 langue
[quote]原帖由  zszyj 于 2008-2-6 13:05 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7946676&ptid=432048][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

这不是标准C的函数, 是win sdk的函数, 作用是搜索目录下的第一个文件,要和FindNext配合使用. 
UNIX下对应的函数是glob. [/quote]

请注意大小写 :mrgreen:
对于 Win32,如果不加指定,MSVC 是区分 FindFirst 和 findfirst 的
这 findfirst() findnext() 其实是 Turbo C 里面的函数 :em17:

2008-2-6 13:53 zszyj
[quote]原帖由  langue 于 2008-2-6 13:30 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7946701&ptid=432048][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


请注意大小写 :mrgreen:
对于 Win32,如果不加指定,MSVC 是区分 FindFirst 和 findfirst 的
这 findfirst() findnext() 其实是 Turbo C 里面的函数 :em17:


呵呵,怪不得,我正奇怪呢,正确的写法应该是FindFirst和FindNext,何来的小写。原来是turbo C的函数。
<think>好的,我现在需要回答用户关于DOS系统中findfirst函数的使用说明和功能介绍。首先,我需要回忆一下这个函数的相关知识。记得在DOS和早期Windows系统中,_findfirst和_findnext函数用于文件查找,可能涉及到结构体和文件属性等信息。 用户提供的引用中提到,_finddata_t是一个结构体,用于存储找到的文件信息,包括文件名、大小、属性等。这可能与findfirst函数返回的信息有关。引用[1]指出,_findfirst和_findnext用于查找文件,而结构体包含文件的信息。因此,我需要将findfirst函数与这个结构体联系起来。 接下来,我需要考虑函数的具体用法。通常,这类函数会返回一个句柄,用户可以用这个句柄继续查找后续的文件。例如,findfirst可能返回一个句柄,并将第一个匹配的文件信息填充到结构体中。然后使用findnext继续查找,直到没有更多文件为止。最后,需要调用findclose来释放资源,避免内存泄漏。 关于参数方面,用户提到函数原型可能有路径和结构体指针作为参数。例如,findfirst可能接受一个文件通配符(如*.*),以及指向_finddata_t结构体的指针,返回一个句柄。如果返回-1,表示没有找到文件。需要解释每个参数的作用,比如路径支持通配符,结构体存储文件信息等。 在功能介绍部分,需要说明findfirst的主要功能是开始文件搜索,并获取第一个匹配项。它常用于遍历目录中的文件,结合findnext和findclose完成整个过程。可能还需要提到文件属性,比如判断是目录还是普通文件,这可以通过结构体中的attrib字段来判断,例如_A_SUBDIR表示目录。 另外,用户提供的引用中有关于Windows API的hwnd、message等参数,但这里可能不直接相关。不过,引用的结构体中提到的文件名、时间、大小等信息是正确的,需要包含在回答中。 需要注意用户的问题是关于DOS系统,所以可能需要强调这些函数在DOS环境中的使用,以及可能的限制,比如在旧版C运行时库中使用。同时,示例代码会有助于用户理解,比如用C语言展示函数的使用流程,包括打开搜索,循环查找,处理文件信息,最后关闭句柄。 可能还需要提到返回值,比如句柄的有效性,错误处理等。例如,如果findfirst返回-1,表示失败,此时不应继续调用findnext。 最后,根据用户要求,生成相关问题。问题可能涉及结构体字段、函数使用步骤、错误处理、文件属性判断等。 总结回答的结构:首先介绍函数的作用,参数说明,返回值,使用步骤,示例代码,注意事项,以及相关函数如findnext和findclose。然后列出相关问题。</think>### DOS系统中findfirst函数使用说明 #### 功能介绍 `findfirst`函数用于启动文件搜索过程,并返回第一个匹配指定通配符模式的文件信息[^1]。它通常与`findnext`和`findclose`配合使用,实现目录遍历功能。该函数会将文件属性、大小、名称等信息存储在`_finddata_t`结构体中。 #### 函数原型 ```c long _findfirst(const char* pattern, struct _finddata_t* fileinfo); ``` - **参数说明** - `pattern`: 支持通配符的路径字符串(如`C:\\DOS\\*.txt`) - `fileinfo`: 指向`_finddata_t`结构体的指针,用于接收文件信息 #### 返回值 - 成功时返回有效搜索句柄(非负整数) - 失败返回`-1`(如路径不存在或无匹配文件) #### _finddata_t结构体关键字段 ```c struct _finddata_t { unsigned attrib; // 文件属性(如_A_SUBDIR表示目录) time_t time_create; // 创建时间戳 size_t size; // 文件大小(字节) char name[260]; // 文件名(含扩展名) }; ``` #### 使用步骤 1. 声明结构体和句柄 ```c _finddata_t c_file; long hFile; ``` 2. 初始化搜索 ```c hFile = _findfirst("*.bat", &c_file); if(hFile == -1) return; // 处理错误 ``` 3. 遍历结果 ```c do { printf("Found: %s\n", c_file.name); if(c_file.attrib & _A_SUBDIR) printf("(目录)"); } while(_findnext(hFile, &c_file) == 0); ``` 4. 关闭句柄 ```c _findclose(hFile); ``` #### 注意事项 1. 必须调用`_findclose`释放系统资源,否则会导致内存泄漏 2. 文件属性使用位掩码判断,如: - `_A_NORMAL`:普通文件 - `_A_RDONLY`:只读文件 - `_A_SUBDIR`:子目录 3. 时间戳需使用`ctime`等函数转换可读格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值