CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

数据存盘时遇到的问题,double nData[1024],怎么只能存前几个数据?

楼主bcx7810(xiaobi)2003-06-03 19:27:44 在 VC/MFC / 基础类 提问

1024个数的double数组,存盘时前几个数都是对的,后面的全是0,如果数组为int   型就可以了,不知为什么?解决马上给分! 问题点数:0、回复次数:11Top

1 楼MPU(黑眼圈)回复于 2003-06-03 19:50:54 得分 0

你是如何存盘的?Top

2 楼ATField()回复于 2003-06-03 19:52:36 得分 0

注意大小为  
  1024×sizeof(double)Top

3 楼bcx7810(xiaobi)回复于 2003-06-03 20:27:50 得分 0

存盘是  
  for   (j=0;j<16*1024;j++)  
  {  
          fwrite(&m_nData[j],sizeof(double),1,fp);  
  }  
  读盘是  
  for   (j=0;j<16*1024;j++)  
  {  
          fread(&m_nData[j],sizeof(double),1,fp);  
  }  
  读盘时前80个数据都是对的?Top

4 楼serverclient(郁闷)回复于 2003-06-03 21:07:29 得分 0

不用这么麻烦吧。。。  
  存盘:  
  fwrite(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
  读取:  
  fread(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
  不就行了??  
  或者使用CFile类的WriteHuge和ReadHuge成员函数可能更好!Top

5 楼bcx7810(xiaobi)回复于 2003-06-03 21:22:22 得分 0

我用的就是  
  fwrite(&m_nData,sizeof(double),16*1024,fp);  
  fread(&m_nData,sizeof(double),16*1024,fp);  
  但是读取来的还只有前面几个数,其他都为零?  
  Top

6 楼serverclient(郁闷)回复于 2003-06-03 21:37:02 得分 0

大哥再仔细看看!!  
  我的:fwrite(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
   
  你的:fwrite(&m_nData,sizeof(double),16*1024,fp);  
  不一样吧??  
  Top

7 楼lws08()回复于 2003-06-03 22:22:50 得分 0

整个有关读写的程序贴出来看看?Top

8 楼windbells(风铃)回复于 2003-06-03 22:30:28 得分 0

你在读之前是不是没有关闭文件呢?  
  用下面的程序试试  
   
  FILE   *fp;  
  fp=fopen(FilePath,"wb");  
  double   m_nData[1024];  
  if   (fp==NULL)  
  {  
        return;  
  }  
  try  
  {  
   
        for   (j=0;j<1024;j++)  
        {      
                  fwrite((char   *)&m_nData[j],sizeof(double),1,fp);  
                  fflush(fp);  
          }  
  }  
  catch(...)  
  {  
  }  
  fclose(fp);  
   
  Top

9 楼blackblue(跌跌撞撞)回复于 2003-06-03 23:06:12 得分 0

fwrite(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
  fread(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
   
  这两个函数里面&m_nData不对吧。直接用m_nData就行了  
   
  fwrite(&m_nData,sizeof(double)   *   1024   *   16,1,fp)   ;  
  fwrite(&m_nData,sizeof(double),16*1024,fp);  
  还有这两种使用方法没什么差别阿,顶多就是文件中double数据的存放格式不一样  
   
  Top

10 楼XingXing2004(新星)回复于 2003-06-03 23:24:57 得分 0

我也想学学,我把文件从对话框中输入数据,以保存为文本文件,可是读的时候不对,能帮我分析一下吗?  
  谢谢!  
  struct   EngDataStruct  
  {  
  double   ne[100];  
  double   Me[100];  
  double   Ge[100];  
  double   Ne[100];  
  }EngDataInput[SIZE];  
  void   CETCMDoc::OnEngDataSaveTxt()    
  {  
  //   TODO:   Add   your   command   handler   code   here  
  CString   str;  
  CStdioFile   file;  
  CString   filename;  
  m_bEngDataSaveTxt=TRUE;  
  CFileDialog   dlgFile(FALSE,"txt","*.txt");  
  if(dlgFile.DoModal()==IDOK)  
  {  
  filename=dlgFile.GetFileName();  
  if(file.Open(filename,CFile::modeCreate|CFile::modeWrite|  
  CFile::typeText)==0)  
  {  
  return;  
  }  
  else  
  {  
  str.Format   ("ne                     Me                                           Ge                                     Ne\n");  
                  file.WriteString(str);  
  for(int   i=0;i<m_sEngInputData.m;i++)  
  {  
                // fwrite(&Engdata[i],sizeof(double),1,m_pFile);  
          EngDataInput[i].ne[i]=m_sEngInputData.m_dEngRotSpeed[i];  
  EngDataInput[i].Me[i]=m_sEngInputData.m_dEngTorque[i];    
                                  EngDataInput[i].Ge[i]=m_sEngInputData.m_dEngInputGe[i];  
                                  EngDataInput[i].Ne[i]=m_sEngInputData.m_dEngInputNe[i];  
  str.Format("%0.2f   %0.2f                 %0.2f                 %0.2f\n",  
  EngDataInput[i].ne[i],EngDataInput[i].Me[i],EngDataInput[i].Ge[i],EngDataInput[i].Ne[i]   );  
          file.WriteString   (str);  
  }  
  file.SetLength(file.GetPosition());  
  file.Close();  
  }  
  str="notepad"+filename;  
  WinExec(str,SW_SHOW);  
  }  
  写,读为fread  
   
  void   CETCMDoc::OnEngFILEOPEN()    
  {  
  //   TODO:   Add   your   command   handler   code   here  
  CFileDialog   dlgFile(TRUE,"txt","*.txt");  
  if(dlgFile.DoModal()==IDOK)  
  {  
                FILE   *fp;  
  CString   str;  
  int   i=0;  
  if((fp=fopen(dlgFile.GetPathName(),"rb"))==NULL)        
  {    
          return;  
  }  
  else  
  {  
  fseek(fp,0L,SEEK_SET);  
                  while(!feof(fp))  
  {  
            fread(&EngDataInput[i],4*sizeof(double),4,fp);  
          m_sEngInputData.m_dEngRotSpeed[i]=EngDataInput[i].ne[i];  
          m_sEngInputData.m_dEngTorque[i]=EngDataInput[i].Me[i]     ;    
    m_sEngInputData.m_dEngInputGe[i]=EngDataInput[i].Ge[i]   ;  
    m_sEngInputData.m_dEngInputNe[i]=EngDataInput[i].Ne[i]   ;  
  str.Format("%0.2f   %0.2f                 %0.2f                 %0.2f\n",  
                  m_sEngInputData.m_dEngRotSpeed[i],    
                  m_sEngInputData.m_dEngTorque[i],  
                  m_sEngInputData.m_dEngInputGe[i],  
                  m_sEngInputData.m_dEngInputNe[i]);  
  }  
  }  
  fclose(fp);  
  }  
  }  
   
  Top

11 楼bcx7810(xiaobi)回复于 2003-06-04 17:09:15 得分 0

存盘时  
  FILE   *fp;  
  if((fp=fopen(pt.HardwareParameterFileName,"w+"))==NULL)  
  {  
          AfxMessageBox("不能打开文件!");  
          return;  
  }  
  else  
  {  
        fwrite(&pm.m_channelInput,sizeof(int),1,fp);  
        fwrite(&pm.m_blockLength,sizeof(int),1,fp);          
        fwrite(&pm.m_dataBlocks,sizeof(int),1,fp);    
        for   (int   j=0;j<pm.m_channelInput;j++)  
  {  
        OnStringToData(pt.m_projectUnits[j]);  
        pm.m_saveProjectUnits[j]=pt.m_saveProjectUnit;  
        fwrite(&pm.m_saveProjectUnits[j],sizeof(int),1,fp);  
        fwrite(&pm.m_calibrations[j],sizeof(float),1,fp);    
  }  
  fwrite(&pm.m_pcZoom,sizeof(float),1,fp);      
  fwrite(&pm.m_samplingFrequency,sizeof(float),1,fp);          
  fwrite(&pm.m_voltRange,sizeof(float),1,fp);        
  fwrite(&pm.m_saveTriggerMode,sizeof(int),1,fp);  
  fwrite((char   *)&m_nData,sizeof(double),16*1024,fp);  
  fclose(fp);  
      }  
  }Top

相关问题

  • 数据库存盘
  • 数据窗口的内容存盘!!!
  • 数据窗口存盘问题??100分!!!
  • 关于数据窗口如何存盘?(新手)在线等待!!
  • 数据窗口中如何按照显示的列(字段,顺序)数据进行存盘导出?
  • 在数据库中,怎样让输入的数据立即存盘!!防止掉电····
  • 存盘的问题:我没有对数据窗口中的数据项作出修改,为什么还是提示“数据修改成功”呢?
  • 如何让tdbnavigator数据录入后立即物理存盘?快,快,快,帮我一把.
  • ClientDataSet1控件更新dbgrid中的数据时,执行applyupdates(-1)为何乱存盘了?
  • ORACLE的SQL PLUS下,什么命令/格式 将SELECT出的数据存盘到本地TXT格式文件

关键词

  • 数据
  • 数组
  • 个数
  • double
  • 存盘时
  • 前几

得分解答快速导航

  • 帖主:bcx7810

相关链接

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

广告也精彩

反馈

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