请教一个CFile::Read()的问题
一个文件内容十六进制为:
38 42 43 42 00 01 0B B8 00 00 00 23 00 24 00 24 ......
我要从中读取6字节的数据
CFile file;
.....
struct
{
short a;//short为2字节
short b;
short c;
}abc;//这个结构体大小6字节
file.Read(&abc,6);//从文件开头读取6字节数据
我预期的结果是 a=0x3842,b=0x4342,c=0x0001;
可是实际的结果是a=0x4238,b=0x4243,c=0x0100
a和b的值2个字节颠倒过来了,(看 a的 38 42 变成了42 38),请问这是怎么回事,要如何解决
不是这个问题,我csdn上问了下,自己也验证了一下,是这样的
因为,x86的内存单元是倒序的……用过汇编就很清楚,比如1这个整数,内存里是01 00 00 00,而不是00 00 00 01
CFile::Read()函数的问题
Read只是向PString指向的地址的连续9个字节的空间内存储读到的数据,并不管你为这个指针分配了多少空间!是可以读取字符的,而且在显示字符串时是以'\\0'作为字符串结束标志的,同样也是不管这个char的指针分配了多大的空间,所以也是可以正常显示的。但是,在一个程序中还有其他很多变量的,而其他变量的地...
为什么我在MFC中调用 CFile::Read() 时 读到的值比实际内容多了很多空...
两种可能:1、你的文件中可能有空格换行,tab等空白字符。2、你的显示代码在遇到0后没结束。
为什么用CFile::Read()读出中文都是乱码?
1.设置字符集,读取的时候好处理中文 2.可能对于空格等自动截取了 3.一个是UNICODE字符串,一个是ANSI字符串,两者之间需要编码转换 ---解决方案--- C\/C++ codeCFile file(L"c:\\\\test.txt",CFile::modeRead);char *pBuf;int iLen=file.GetLength();pBuf=new char[iLen+1];file.Read(pBuf,...
MFC中CFile::Read抛出异常,错误码5(access denied)
你这个代码的逻辑判断有问题,!CFile::Open 是打开失败的情况,这种情况应该出错误提示,并进行错误处理和退出函数。只有在相反的情况下才能进行文件读取。if (!fImage.Open(szFullFileName, CFile::readOnly|CFile::shareDenyRead)){\/\/打开失败了AfxMessageBox("xxx");\/\/处理打开失败情况}else{ fIma...
CFile::Read()怎么用,MFC中。。。
CFile::Open成功打开文件后,使用 GetLength 获取文件的长度,nFileLen;然后 new 一块内存。char*lpBuf = new char[nFileLen];再使用 Read( lpBuf, nFileLen);文件的数据就装入到 lpBuf指向的内存块了。Read是从当前游标开始读取,默认是文件起始,可以使用 Seek\/ SeekToBegin \/ SeekToEnd 来定位。“...
CFile Read(),当一次读不完文件数据的时候,下次再读,怎么就知道接着上次...
读文件是有个文件指针,调用Read时文件指针制动向前移动,下次再调用是是接着上次文件指针读。
CFile read 为什么不能读出全部内容
read函数是有限制的,最大不能超过某个值,你可以试试,最好是进行循环读取,循环读取的方式:先获取文件长度,然后循环读取某一指定长度,直到读取完成。
探讨一下CFile::Read函数的用法?
CString变量不是指针,&CString是地址,可以赋值给指针,但和Read函数的参数类型不匹配。而CString::GetBuffer()函数的返回值类型是char*,进行转换后(void*),就与参数类型匹配,所以可以。从这个问题可以看出的基础知识还不够牢固,对指针的概念还很模糊。CString* pstr ;pstr是CString*类型的指针,而...
用了CFile::Read()后读不到数据到指定变量里
Read(cRec,CrecFile.GetLength());CString m_Record;(我假想你这个变量是这么定义的)m_Record += cRec;GetDlgItem(IDC_RECORD)->SetWindowText(m_Record);msdn 的例子 Example \/\/example for CFile::Read extern CFile cfile;char pbuf[100];UINT nBytesRead = cfile.Read( pbuf, 100 );
CFile的Read函数参数怎么设?
CString strText;cfile.Read( strText.GetBuffer( 100 ), 100 );strText.ReleaseBuffer();把strText的值送到文本框就行了,