CFile文件操作问题

夜行人 2011-12-30 09:24:30
第一次读取文件时一切正常,读取完了后在函数中关闭了。第二次执行同一函数打开同一文件,没有问题,但读取到的内容却乱七八糟的,都不知是些什么数据。这是神马问题?
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜行人 2011-12-30
  • 打赏
  • 举报
回复
不该怀疑MFC类库的,是我自己有一个转换函数,函数里设置了一个静态变量,所以只有重启程度能才正常打开文件
夜行人 2011-12-30
  • 打赏
  • 举报
回复
这是操作文件的代码
	UCHAR LinBuf[100] ;
int i ;
int Lcnt ;
int HexBase ;
int a ;
int endf ;
UCHAR *p1 ;
int HexLen ;
int nResult = 0;
CFile file;
int flag = 0;

if(!file.Open(strPath,CFile::modeRead)){
return (-1);
}
//初始化数组
for ( Lcnt = 0 ; Lcnt < MAX_SIZE ; Lcnt ++ ) {
m_bufFlash[Lcnt] = 0xFF ;
}
HexBase = 0 ;
endf = 0 ;
while ( endf == 0 ) {
flag++;
LinBuf[0] = 0 ;
GetHexLine(LinBuf,90,&file) ;
if ( LinBuf[0] == 0 ) {
endf = 1 ;
continue ;
}
p1 = LinBuf ;
if ( LinBuf[0] == '#' ) {
a = ParaSet(LinBuf + 1) ;
if ( a < 0 ) {
nResult = -1;
endf = 1;
continue;
}
}
else {
a = CheckHexLin(p1) ;
if ( a < 0 ) {
nResult = -1;
endf = 1;
continue;
}
if ( m_bufHex[3] != 0 ) {
if ( m_bufHex[3] == 2 ) {
HexBase = m_bufHex[4] * 256 + m_bufHex[5] ;
HexBase *= 0x10 ;
}
else {
endf = 1 ;
}
continue ;
}
HexLen = m_bufHex[0] ;
if ( HexLen == 0 ) {
endf = 1 ;
continue ;
}
m_nHexAddr = HexBase + m_bufHex[1] * 256 + m_bufHex[2] ;
for ( i = 0 ; i < HexLen ; i ++ ) {
if ( m_nHexAddr > m_nMaxAddr ) {
m_nMaxAddr = m_nHexAddr ;
}
if ( m_nHexAddr >= m_nCodeLength ) {
nResult = -1;
endf = 1;
continue;
}
m_bufFlash[m_nHexAddr++] = m_bufHex[4+i] ;
}
}
}
file.Close();
夜行人 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 glovel0425 的回复:]
两次读是否走的相同代码,如果不是看看是不是操作过程中把你的文件的编码搞乱了。
[/Quote]完全相同的函数,文件编码应该不会乱的,重启程序后,第一次打开文件还是正常的。
glovel0425 2011-12-30
  • 打赏
  • 举报
回复
两次读是否走的相同代码,如果不是看看是不是操作过程中把你的文件的编码搞乱了。
glovel0425 2011-12-30
  • 打赏
  • 举报
回复
不要乱用静态变量的。

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧