大家帮帮忙,用二进制打开文件,用BYTE数组读取数据是为了防止出现0x00吗,用char数组碰到文件里面的0x00会把他当成结束符吗?
用二进制打开文件,用BYTE数组读取数据是为了防止出现0x00吗,用char数组碰到文件里面的0x00会把他当成结束符吗?
部分代码如下:
CFile file;
struct FILE_MSG filemsg;//结构变量
CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"|All Files(*.*)|*.*||",NULL);
if(filedlg.DoModal()==IDOK)
{
//以二进制和只读方式打开文件
filemsg.sFilepath=filedlg.GetPathName();
if(file.Open(filemsg.sFilepath,CFile::modeRead|CFile::typeBinary)==0)
{
AfxMessageBox("文件打开失败");
return;
}
filemsg.iFilesize=file.GetLength();
第一种方法://将读入的数据存到char 数组buffer
char* buffer=new char(filemsg.iFilesize);
//按文件实际大小建立缓冲区
file.Read(buffer,filemsg.iFilesize);
BYTE* cmd=new BYTE(iStrlen+1);
memset(cmd,'\0', iStrlen+1);
for(int i=0;i<iStrlen;i++)
{
cmd[i]=msg.at(i);
}
cmd[i]='\0';
第二种方法://将读入的数据存到byte数组cmd
BYTE* cmd=new BYTE(iStrlen+1);
memset(cmd,'\0', iStrlen+1);
file.Read(cmd,filemsg.iFilesize);
我写的程序是要求pc服务器端通过无线网络发送数据到无线通信模块MC55,MC55当读到0x00的时候让它以NULL显示,而不是把它当成是结束符,因为程序需要,想问一下第一种方法可以吗