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

如何用ReadFile读取结构的数据成员?

楼主AMDCPU(旺)2004-12-03 23:52:23 在 VC/MFC / 基础类 提问

如何用ReadFile读取结构的数据成员?  
   
  CString   str,str2,str3;  
  char   Filepath[]="F:\\f4\\data\\s2\\tt.DAT";  
  DWORD   dwRead;  
  HANDLE   hFile;  
  DWORD   pFile;    
   
  struct   tagFILERAM  
  {  
      int   m_nTy;  
      time_t   time1;  
      DWORD dwSi;                
      int   nSj;              
      int   nTk;      
      int   nBc;      
  }FILERAM;  
   
  hFile=CreateFile(Filepath   ,GENERIC_READ,FILE_SHARE_READ   ,  
                                                                NULL,   OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL   |   FILE_FLAG_RANDOM_ACCESS   ,   NULL);  
      if(   INVALID_HANDLE_VALUE   ==   hFile   )    
  {  
  AfxMessageBox("DataFile   is   not   open!");  
   
     
  };  
  ReadFile(hFile,FILERAM.nSj,4,&dwRead,NULL);////这里的FILERAM.nSj不能通过  
  CloseHandle(hFile);  
  str=FILERAM.nSj.Format("%d");////////这里的FILERAM.nSj不能通过  
  pDC->TextOut(50,50,str);  
   
  想把FILERAM.nSj写成FILERAM->nSj也不行  
  究竟该怎样写?读数据和.Format语句里面是不是相同?  
  要求,不要各个数据成员都要分别用SetFilePionter移动指针。  
   
  问题点数:20、回复次数:6Top

1 楼auly403(卡西*丁布)回复于 2004-12-04 08:13:04 得分 5

把结构体的地址作参数,然后指定要读的长度.  
  不过我是用readhuge()的.Top

2 楼hjunxu(hjun)回复于 2004-12-04 08:47:09 得分 10

ReadFile(hFile,FILERAM.nSj,4,&dwRead,NULL);////这里的FILERAM.nSj不能通过  
  ...   ...  
  str=FILERAM.nSj.Format("%d");////////这里的FILERAM.nSj不能通过  
   
  这是什么写法啊?Top

3 楼hjunxu(hjun)回复于 2004-12-04 08:52:50 得分 0

FILERAM   fr;  
  ReadFile(   hFile,   fr   ,sizeof(FILERAM),&dwRead,NULL)  
   
  .......  
  str.Format("%d",fr.nSj);  
  Top

4 楼hjunxu(hjun)回复于 2004-12-04 09:09:52 得分 0

上面我写错了。  
  ReadFile(   hFile,   (void   *)&fr   ,sizeof(FILERAM),&dwRead,NULL);  
   
  这样的话只是正好把读近来的数据来填充你的结构而已。  
  我想不出写法了。  
  Top

5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 15:14:05 得分 5

你文件不能识别出你的结构Top

6 楼AMDCPU(旺)回复于 2004-12-05 10:06:53 得分 0

谢谢各位!  
  问题已经解决!  
   
  1、要记得先初始化!得到一个实例aa  
   
  2、再把ReadFile(   hFile,   &aa   ,sizeof(FILERAM),&dwRead,NULL)  
  中的第二项指向实例aa的地址!  
  再用指向aa的指针bb     bb->nSj就行了!或是直接aa.nSj  
                                                     
   
  要记住初始化。Top

相关问题

  • 已知数组内容和结构体类型,按照结构体成员变量的长度读取数组,高分悬赏!!
  • 结构对齐,文件读取读取问题
  • 按字节读取一个结构
  • 读取结构体数据的问题
  • 怎样在成员类中读取集合类的属性?
  • 如何在一个类里读取另一个类的成员?
  • 怎样用ADO读取未知结构的表
  • XSLT中可以从变量中读取树状结构吗?
  • 指针读取结构体数据进行比较出错
  • 如何读取visio控件中图形的拓扑结构?

关键词

  • 数据
  • 结构
  • null
  • fileram
  • nsj
  • readfile
  • dwread
  • hfile
  • 成员
  • aa

得分解答快速导航

  • 帖主:AMDCPU
  • auly403
  • hjunxu
  • oyljerry

相关链接

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

广告也精彩

反馈

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