在c++中如何获取文件名

我需要读取已经存储的按序编号的数据文件,然后根据文件名来判断是否为所需要的文件后再读取里面的数据,但是不知道该用什么函数。请哪位知道的大侠赐教下……我需要的是Linux下... 我需要读取已经存储的按序编号的数据文件,然后根据文件名来判断是否为所需要的文件后再读取里面的数据,但是不知道该用什么函数。请哪位知道的大侠赐教下……
我需要的是Linux下的啊!!Windos的不行啊!!先谢了…………
展开
 我来答
chenzhizszs
2010-09-06 · TA获得超过135个赞
知道答主
回答量:50
采纳率:0%
帮助的人:49.7万
展开全部
一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。

函数的输入纳陵铅为要洞好查找的根目录,输出为存放所有文件名称汪春的缓冲

算法:使用递归
二、代码:

void FindFileInDir(char* rootDir, char* strRet)

{

char fname[MAC_FILENAMELENOPATH];

ZeroMemory(fname, MAC_FILENAMELENOPATH);

WIN32_FIND_DATA fd;

ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

HANDLE hSearch;

char filePathName[256];

char tmpPath[256];

ZeroMemory(filePathName, 256);

ZeroMemory(tmpPath, 256);

strcpy(filePathName, rootDir);

BOOL bSearchFinished = FALSE;

if( filePathName[strlen(filePathName) -1] != '\\' )

{

strcat(filePathName, "\\");

}

strcat(filePathName, "*");

hSearch = FindFirstFile(filePathName, &fd);

//Is directory

if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

{

strcpy(tmpPath, rootDir);

strcat(tmpPath, fd.cFileName);

FindFileInDir(tmpPath, strRet);

}

else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

{

sprintf(fname, "%-50.50s", fd.cFileName);

strcat(strRet + strRet[strlen(strRet)] , fname);

}

while( !bSearchFinished )

{

if( FindNextFile(hSearch, &fd) )

{

if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

{

strcpy(tmpPath, rootDir);

strcat(tmpPath, fd.cFileName);

FindFileInDir(tmpPath, strRet);

}

else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

{

sprintf(fname, "%-50.50s", fd.cFileName);

strcat(strRet + strRet[strlen(strRet)] , fname);

}

}

else

{

if( GetLastError() == ERROR_NO_MORE_FILES ) //Normal Finished

{

bSearchFinished = TRUE;

}

else

bSearchFinished = TRUE; //Terminate Search

}

}

FindClose(hSearch);

}

参考资料: http://blog.csdn.net/myemailcn/archive/2004/02/20/21784.aspx

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友68407197a
2010-09-06 · TA获得超过256个赞
知道小有建树答主
回答量:877
采纳率:0%
帮助的人:489万
展开全部
没看明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式