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

请教一个文件读取的问题

楼主free_eyes(自由之眼)2005-03-01 14:56:11 在 VC/MFC / 基础类 提问

我想读取所有的文件内容,   并把它放入一个char数组中(szFileBuff是一个char   *数组)  
  调用后ReadFile返回1,   证明已经正确的读取了文件,   但是我发现szFileBuff是一个空值,   并没有读取到文件?   请问大侠门有没有用过ReadFile,   最好能给个使用的完整例子,   谢谢  
  我的代码如下:  
  DWORD                 ilength;  
  BOOL                   blRead   =   FALSE;  
  blRead   =   ReadFile(hFile,   szFileBuff,   ilength,   &ilength,   NULL);  
  if(FALSE   ==   blRead)  
  {  
        return   FALSE;  
  }  
  else  
  {  
        return   TRUE;  
  }  
  问题点数:80、回复次数:11Top

1 楼xqk(夏乾坤)回复于 2005-03-01 15:04:16 得分 0

我觉得还是参数的值不对吧传进去的Top

2 楼qiangorqiang(qiangqiang)回复于 2005-03-01 15:06:41 得分 0

你看一下ilength的值是多少。Top

3 楼jslisong(碧螺春)回复于 2005-03-01 15:06:44 得分 0

CreateFile??Top

4 楼free_eyes(自由之眼)回复于 2005-03-01 15:13:19 得分 0

我的全部代码如下:  
  BOOL   CSystemLog::OpenUserFile(char   *   szTargetID,   char   *   szFileBuff)  
  {  
  if(TRUE   !=   OpenTargetFile(szTargetID))  
          {  
          return   FALSE;  
  }  
  else  
  {  
  DWORD                 ilength;  
                  if(FALSE   ==   ReadFile(hRead,   szFileBuff,   ilength,   &ilength,   NULL))  
  {  
  return   FALSE;  
  }  
  else  
  {  
  return   TRUE;  
  }  
  }  
  }  
   
   
  BOOL   CSystemLog::OpenTargetFile(char   *szTargetID)  
  {  
  if(INVALID_HANDLE_VALUE   !=   hRead)  
  {  
  CloseHandle(hRead);  
  }  
   
  wsprintf((LPTSTR)szFileName,   "%s%s.log",   szUserPath,   szTargetID);  
   
  //创建日志文件  
  if((hRead   =   CreateFile((LPCTSTR)szFileName,   GENERIC_READ,   FILE_SHARE_READ,   NULL,   OPEN_ALWAYS,   0,   NULL))==INVALID_HANDLE_VALUE)  
  {  
  return   FALSE;  
  }  
   
  //SetFilePointer(hRead,   0,   0,   FILE_BEGIN);  
  return   TRUE;  
  }  
   
  文件打开成功了,   但是无法将数据读出Top

5 楼free_eyes(自由之眼)回复于 2005-03-01 15:16:01 得分 0

哦,   我发现错误在什么地方了.   必须指定读取文件的大小  
  比如读取1024个字节.   就要这么写  
  FALSE   ==   ReadFile(hRead,   szFileBuff,   (DWORD)1024,   &ilength,   NULL)  
  但是我的文件大小是不固定的呀?   如何才能全部读出呢?Top

6 楼somexing(somexing)回复于 2005-03-01 15:16:24 得分 20

szFileBuff   要预先分配内存  
   
  比如   
  char   szFileBufff[100000];  
   
  或者  
   
  szFileBuff   =   (char   *)malloc(100000);  
   
   
  free(szFileBuff);Top

7 楼xuzheng318(忧郁王子)回复于 2005-03-01 15:19:05 得分 0

返回值是否正确?Top

8 楼somexing(somexing)回复于 2005-03-01 15:19:15 得分 40

需要读多少,传入参数就多大  
   
  当然可以一次性读出,参数就是GetFileSize   求一下Top

9 楼xuzheng318(忧郁王子)回复于 2005-03-01 15:22:05 得分 0

或者szFileBuff就没有分配空间!Top

10 楼xqk(夏乾坤)回复于 2005-03-01 15:22:49 得分 20

你可以先读文件大小    
   
  int   handle   =   open(filename,O_CREAT);  
  DWORD   size   =   filelength(handle);  
   
  ReadFile(hRead,   szFileBuff,   size   ,   &ilength,   NULL)  
  Top

11 楼free_eyes(自由之眼)回复于 2005-03-01 15:26:18 得分 0

谢谢楼上各位,   给分  
  Top

相关问题

  • 文件读取?
  • 读取文件?
  • 文件读取~
  • 文件读取。。。。。。
  • 文件读取
  • 读取文件
  • 文件读取
  • 读取.dbf文件
  • 文件的读取
  • 文件的读取

关键词

  • 文件
  • szfilebuff
  • 读取
  • ilength
  • sztargetid
  • blread
  • hread
  • readfile
  • bool
  • else

得分解答快速导航

  • 帖主:free_eyes
  • somexing
  • somexing
  • xqk

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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