24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1228  |  回复: 3

orcimbalance

木虫 (著名写手)

[求助] 如何访问文件夹底下文件名没有规则的文件!

C语言如何访问文件夹底下文件名没有规律的文件?有什么函数实现吗?本人论文新手加C语言菜鸟!只能悬赏一分,望谅解!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

imyourkobe

铁杆木虫 (著名写手)

xzhdty: , 欢迎常来程序语言看看 2012-03-17 19:46:07
根据后缀遍历文件,一个个访问吧。
2楼2012-03-17 18:15:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sharkyurui1

金虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
直接用WIN32 API遍历文件夹下所有文件就行了,详见http://apps.hi.baidu.com/share/detail/30522914
3楼2012-03-20 10:39:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
orcimbalance: 金币+1, ★★★★★最佳答案 2012-06-19 19:45:00
帮你找了两个直接的资料

第一个资料:http://topic.csdn.net/t/20060225/18/4577243.html
在C中,使用findfirst和findnext两个函数就可以遍历目录了,例如:
CODE:
struct   ffblk   FFileStru;
int   iValue;
iValue   =   findfirst( "c:\test\*.* ",   FFileStru,   0);           //0表示寻找所有文件和目录
while(iValue)
{
                ...........             //这里是处理语句,有关文件的信息保存在结构变量FFileStru里
                iValue   =   findnext(FFileStru);
}

findfirst的第三个参数可以具有下列值:
CODE:
#define   FA_RDONLY        0x01         /*   Read   only   attribute   */
#define   FA_HIDDEN        0x02         /*   Hidden   file   */
#define   FA_SYSTEM        0x04         /*   System   file   */
#define   FA_LABEL        0x08         /*   Volume   label   */
#define   FA_DIREC        0x10         /*   Directory   */
#define   FA_ARCH        0x20         /*   Archive   */

遍历一个文件夹可以仿照以上代码写个递归就OK了。

第二个资料:http://hi.baidu.com/tjkvvv/blog/item/8e848e3ed139bcfb828b130e.html

c语言目录操作- 这里给你提供一些C的目录操作函数,原型声明所在头文件为dir.h、dos.h,仅供参考:
CODE:
int chdir(char *path) 使指定的目录path(如:"C:\\WINDOWS")变成当前的工作目录,成功返回0
int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功返回0
pathname为指定的目录名和文件名,如"C:\\WINDOWS\\TXT"

ffblk为指定的保存文件信息的一个结构,定义如下:
CODE:
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 档案

例:
CODE:
struct ffblk ff;
findfirst("*.DOC",&ff,FA_RDONLY);
int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0
void fumerge(char *path,char *drive,char *dir,char *name,char *ext)
此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名,存在path中.
int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)
此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.

int getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称
drive 指定的驱动器(0=当前,1=A,2=B,3=C等)
direc 保存指定驱动器当前工作路径的变量 成功返回0
char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字节长为为止.错误返回NULL
int getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)
int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等),返回可使用驱动器总数
int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0
int rmdir(char *pathname) 删除一个目录pathname,成功返回0
char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中.
char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径,此函数使用DOS的PATH变量,未找到文件返回NULL.

很女子很弓虽大
4楼2012-03-20 16:36:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 orcimbalance 的主题更新
信息提示
请填处理意见