findfirst用法

来源:百度知道 编辑:UC知道 时间:2024/06/11 12:29:30
p=findfirst ("*.*",&dirment,0x3f);/*问题*/
if (!p&&dirment.ff_name[0]=='.'))/*问题*/
{
p=findnext (&dirment);
p=findnext (&dirment);
}
/*子目录非空时*/
while (!p)
{
if ((dirment.ff_attrib&0x10)==FA_DIREC) );/*问题*/

{
chdir (dirment.ff_name);
/*递归调用本身*/
findfile();
chdir("..");
}
p=findnext (&dirment);
}
这些标出问题的行都不太明白 请达人告诉我下 特别是那些十六进制数字
别给我网上复制的东西 我是问明白人语句的具体意义和十六进制数字的具体意思

int findfirst(char *pathname, struct ffblk *ffblk, int attrib);
attrib是标志位,用于
FA_RDONLY 只读文件┃FA_LABEL 卷标号┃
FA_HIDDEN 隐藏文件┃FA_DIREC 目录 ┃
FA_SYSTEM 系统文件┃FA_ARCH 档案 ┃

1.p=findfirst ("*.*",&dirment,0x3f);
用于查找当前文件夹下所有文件,direment存放查找结果,0x3f就是2进制的00111111,表示六个标志位全满,FA_RDONLY|FA_LABEL|FA_HIDDEN|FA_DIREC|FA_SYSTEM|FA_ARCH = 1|10|100|1000|10000|100000 = 0x3f.

2.if (!p&&dirment.ff_name[0]=='.'))
'.’表示当前目录,组合起来如果查找结果有当前目录,那继续在当前目录查找。

3.if ((dirment.ff_attrib&0x10)==FA_DIREC) );
表示如果查找结果位目录的话,就继续递归查找目录下面的文件。

函数名: findfirst, findnext
功 能: 搜索磁盘目录; 取得下一个匹配的findfirst模式的文件
用 法: int findfirst(char *pathname, struct ffblk *ffblk, int attrib);
int findnext(struct ffblk *ffblk);
程序例:

/* findnext example */

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf