首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于读文件解决思路

2012-02-13 
关于读文件typedefstruct{charName[12]BYTENone1BYTENonefloatAlarmBYTEControlBYTESwitchBYTEFrequ

关于读文件
typedef   struct{
      charName[12];
      BYTENone1;
      BYTENone;
      float   Alarm;
        BYTE   Control;
        BYTESwitch;
        BYTE         Frequency;
        BYTE         Station;
        BYTE         Other;
}POINTS;

typedef   struct{
charName[20];
BYTE         None;
}LINEBOX;

typedef   struct{
intYY;
intMM;
intDD;
BYTE         None;
}PASS;


typedef   struct{
BYTEStart;/*总测点数起始值*/
BYTEEnd;/*总测点数截止值*/
}AREA;

typedef   struct{
AREAArea[6];
POINTS     Points[MAXPNUM];
BYTEBoxNumber;
LINEBOX   LineBox[32];
charUserName[31];
int           BackDate;
charPassName[31];
BYTENo2;
PASSPassStr;
int           FirstDate;    
}INITDATA;
hFile=OpenFile( "C:\\INITDATA ",&OfStruct,OF_WRITE)
_write(hFile,(char   *)&InitData,sizeof(InitData));
_close(hFile);

现在想读取C:\\INITDATA中的内容,怎么做?
_read(hFile,(char   *)&InitData,sizeof(InitData));
这样读出来的是乱码为什么?

[解决办法]
最好不要混用API和c库,即使是ms提供的兼容库函数
写文件时用
FILE* f = fopen( "C:\\INITDATA ", "wb " );
fwrite( (void*)&InitData, sizeof(InitData), 1, f);
close(f);

读取时
FILE* f = fopen( "C:\\INITDATA ", "rb " );
fread( (void*)&InitData, sizeof(InitData), 1, f );
close(f);

[解决办法]
汉字都是双字节的,而且每个字节的ASCII码都是> 128的,当然在WATCH窗口中全是乱码了
[解决办法]
汉字的数据应该没有错,看看你的显示设置问题。

热点排行