CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求助~~~在线等待,分不是问题,答对了要多少给多少,请各位高手帮忙!!!!!

楼主cuistar(DancingCode)2003-09-03 21:43:30 在 C/C++ / C语言 提问

就是给定一个目录,列出其中的所有文件(包括子目录下的文件),用对话框实现此功能~~~~~~~~要VC源程序代码(包括对话框函数对类函数的调用) 问题点数:100、回复次数:4Top

1 楼zjq8086(老鳄)回复于 2003-09-03 21:53:46 得分 0

我以前做过,给多少分?Top

2 楼zjq8086(老鳄)回复于 2003-09-03 22:07:58 得分 100

算了,那么容易找到了,给你吧  
   
  //   SearchDir.cpp   :   Defines   the   entry   point   for   the   console   application.  
  //  
   
  #include   "stdafx.h"  
  #include   <Windows.h>  
  #include   <malloc.h>  
   
  typedef   bool   (*DisposeFile)(char   *,   char   *   );     //函数指针返回0则表示接收搜索  
   
   
  bool   SearchDir(char   *   CurDir,   DisposeFile   dispose);  
  bool   showname(char   *dir,   char   *   FileName);  
   
  int   finename   =   0;  
   
  int   main(int   argc,   char*   argv[])  
  {  
  SearchDir("d:\\",showname);  
  printf("%d\n",   finename);  
  return   0;  
  }  
   
  bool   showname(char   *dir,   char   *   FileName)  
  {  
  finename   ++;  
  printf("%s%s\n",dir,   FileName);  
  return   1;  
  }  
   
  bool   SearchDir(char   *   CurDir,   DisposeFile   dispose)  
  {  
  //传入的参数形式为:d:\www\  
  //返回值并没有意义,只是用来在递归里判断是否结束本次搜索  
          HANDLE     fHandle;  
          WIN32_FIND_DATA   FileData;  
          int   i;  
  char   *dir;  
   
  dir   =   (char   *)malloc(MAX_PATH   +   strlen(CurDir)   +   2);  
  strcpy(dir,CurDir);  
  strcpy(dir   +   strlen(CurDir),"*");  
   
          fHandle   =   FindFirstFile(dir,   &FileData);  
           
          if   (fHandle   ==   INVALID_HANDLE_VALUE)  
  {  
  free(dir);  
                  return   1;  
          }  
          i   =   1;  
          while   (i   !=   0)  
  {  
                  if   (FileData.dwFileAttributes   ==   FILE_ATTRIBUTE_DIRECTORY)  
  {  
  if   (strcmp(FileData.cFileName,".")   !=   0   &&   strcmp(FileData.cFileName,"..")   !=   0)  
  {  
  strcpy(dir,CurDir);  
  strcpy(dir   +   strlen(CurDir),   FileData.cFileName);  
  strcpy(dir   +   strlen(CurDir)   +   strlen(FileData.cFileName),   "\\");  
  if   (!SearchDir   (dir,   dispose))  
  {  
  free(dir);  
  return   0;  
  }  
  }  
                  }  
                  else  
  {  
  if   (!dispose(CurDir,   FileData.cFileName))  
  {  
  free(dir);  
  return   0;  
  }  
  }  
                  i   =   FindNextFile(fHandle,   &FileData);  
          }  
          FindClose(fHandle);  
  free(dir);  
  return   1;  
  }  
  Top

3 楼cuistar(DancingCode)回复于 2003-09-04 07:59:52 得分 0

谢谢高手,请问有没有用CfileFind写的代码???Top

4 楼zjq8086(老鳄)回复于 2003-09-05 13:56:21 得分 0

CFileFind里封装的好像也是上面的API,不过只能搜索当前路径,   要想实现搜索整个目录还要类似上面的递归处理一下,你自己去改写吧:)Top

相关问题

  • 各位:在线等待!
  • 我在线等待各位大哥大姐的答复
  • api问题,请各位高手解答,在线等待
  • 我在线等待各位大哥大姐的答复(2),我一直在线!!!
  • 各位朋友请快帮帮我,急需答案(本人在线等待)
  • 各位关注关注,在线等待!!
  • 各位网友请进~~~在线等待!!!
  • 各位帮忙了!在线等待……
  • 在线等待!各位帮忙!
  • 请各位帮忙,在线等待

关键词

  • 函数
  • searchdir
  • curdir
  • disposefile
  • finename
  • filedata
  • showname
  • 搜索
  • fhandle
  • dir

得分解答快速导航

  • 帖主:cuistar
  • zjq8086

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo