64,637
社区成员
发帖
与我相关
我的任务
分享
//测试第3点:
//对于任何数量的DATA2FILE结构体数组,先使用fwrite写入,再用fread读取,读出来的数据就是错误。
//测试结果正确!不知道LZ的错误原因具体怎么出现的?
#include <windows.h>
#include <stdio.h>
typedef struct tagDATA
{
int m_nData1;
float m_fData2;
float m_fData3;
float m_fData4;
float m_fData5;
float m_fData6;
float m_fData7;
WORD m_wData8;
WORD m_wData9;
} TSTDATA;
typedef struct tagData2File
{
TSTDATA pTSTData;
float fZ,fS;
float nZ,nS;
float fPos;
float fBlk;
bool bSign;
}DATA2FILE;
int main()
{
FILE *fp = NULL;
DATA2FILE data = {0},datatemp = {0};
data.pTSTData.m_nData1 = 5;
data.pTSTData.m_fData2 = 2.3;
data.pTSTData.m_fData3 = 3.4;
data.pTSTData.m_fData4 = 4;
data.pTSTData.m_fData5 = 5.5;
data.fZ = 0.2;
data.fS = 3;
fp = fopen("temp.dat","wb");
if(fp == NULL) return 0;
fwrite(&data,sizeof(DATA2FILE),1,fp);
fclose(fp);
fp = fopen("temp.dat","rb");
if(fp == NULL) return 0;
fread(&datatemp,sizeof(DATA2FILE),1,fp);
fclose(fp);
printf("%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
data.pTSTData.m_nData1,
data.pTSTData.m_fData2,
data.pTSTData.m_fData3,
data.pTSTData.m_fData4,
data.pTSTData.m_fData5,
data.fZ,
data.fS);
}
//输出结果:5,2.30,3.40,4.00,5.50,0.20,3.00
FILE *wFile;
if ((wFile = fopen(filename.c_str(), "r+b")) == NULL) /*open file */
{
fprintf(stderr, "Cannot open output file.\n");
return -1;
}