void CTestDlg::OnOk1()
{
// TODO: Add your control notification handler code here
CString pFileName1("D:\\prj\\work\\Project\\test.dat"); //定义文件名
CString pFileName2("D:\\prj\\work\\Project\\test.c"); //定义文件名
UINT utFLength;//保存文件长度
// char *cBuffer=NULL;
//char cTemp; //临时变量
CFile fMyFile; //读文件对象
CFile fToFile; //写文件对象
CFileException Except;//文件异常变量
CClientDC dc(this);
int i = 0;
if(!fMyFile.Open(pFileName1,CFile::modeRead|CFile::typeBinary))//只读的形式打开二进制文件/*CFile::typeBinary*/
{
TRACE("Can't open file %s\n",pFileName1);
}
else //打开成功
{
////////////////////////////////////////////////////////////////
//读取字符操作
utFLength = fMyFile.GetLength(); //获取文件长度
char *cBuffer = new char[utFLength]; //缓冲区
if(cBuffer == NULL)
{
return;
}
for(int i=0; i < utFLength ;i++)
cBuffer[i] = 0;
fMyFile.SeekToBegin(); //将文件读写位指针移动到文件开头
//fMyFile.GetPosition(); //取得目前文件读写位置指针
// char f[100];
// fMyFile.Read(f,100);
fMyFile.Read(cBuffer,utFLength); //从二进制文件中读取数据到缓冲区(内存)cBuffer中
if(!fToFile.Open(pFileName2,CFile::modeCreate|CFile::modeReadWrite,&Except))//打开或创建文件test.c
{
switch(Except.m_cause)//判定文件异常的原因
{
case CFileException::fileNotFound:
printf("ERROR:Fllc nol foint\n");
break;
case CFileException::badPath:
printf("ERROR:Path is invalid\n");
break;
default:
printf("ERROR:file faill");
break;
}
}
else
{
//写操作
//printf("Open the fToFile sucss! Now start Write the file.");
fToFile.Write("uSnsigned char pdata[] = {\r\n",strlen("unsigned char pdata[] = {\r\n"));//写入数组部分
while(1)
{
for(i=0; i < utFLength; i++)
{
fToFile.Write("0x",strlen("0x"));
char cTemp ; //临时变量
cTemp = _T(cBuffer[i]); //sprintf(ret+strlen(ret),"%02X",str[i]);
CString str;
str.Format("%x",cBuffer[i]);
afxDump << str << "\n "; //char Char = TEXT(sprintf(cTemp, "%c", cBuffer[i]));
//MessageBox(str);
//cTemp = cBuffer[i];
//_T(sprintf(buf, "字符串"))
//_T(sprintf(buf, "%c", 字符))
//char Bhigh = (cTemp&0xf000)>>4;
//char Blow = (cTemp&0x0f00); //fToFile.Write(&Bhigh,1);
//fToFile.Write(&Blow,1); fToFile.Write(&cTemp,2);
//fToFile.Write("AF",strlen("AF"));
fToFile.Write(",\n",strlen(",\n"));
}
//fToFile.Write(cBuffer,utFLength);
fToFile.Write("};\r\n",strlen("};\r\n"));
fToFile.Close();
break;
}
}
fMyFile.Close(); if(cBuffer != NULL)
{
delete cBuffer;//释放内存
cBuffer = NULL;
} }}
{
// TODO: Add your control notification handler code here
CString pFileName1("D:\\prj\\work\\Project\\test.dat"); //定义文件名
CString pFileName2("D:\\prj\\work\\Project\\test.c"); //定义文件名
UINT utFLength;//保存文件长度
// char *cBuffer=NULL;
//char cTemp; //临时变量
CFile fMyFile; //读文件对象
CFile fToFile; //写文件对象
CFileException Except;//文件异常变量
CClientDC dc(this);
int i = 0;
if(!fMyFile.Open(pFileName1,CFile::modeRead|CFile::typeBinary))//只读的形式打开二进制文件/*CFile::typeBinary*/
{
TRACE("Can't open file %s\n",pFileName1);
}
else //打开成功
{
////////////////////////////////////////////////////////////////
//读取字符操作
utFLength = fMyFile.GetLength(); //获取文件长度
char *cBuffer = new char[utFLength]; //缓冲区
if(cBuffer == NULL)
{
return;
}
for(int i=0; i < utFLength ;i++)
cBuffer[i] = 0;
fMyFile.SeekToBegin(); //将文件读写位指针移动到文件开头
//fMyFile.GetPosition(); //取得目前文件读写位置指针
// char f[100];
// fMyFile.Read(f,100);
fMyFile.Read(cBuffer,utFLength); //从二进制文件中读取数据到缓冲区(内存)cBuffer中
if(!fToFile.Open(pFileName2,CFile::modeCreate|CFile::modeReadWrite,&Except))//打开或创建文件test.c
{
switch(Except.m_cause)//判定文件异常的原因
{
case CFileException::fileNotFound:
printf("ERROR:Fllc nol foint\n");
break;
case CFileException::badPath:
printf("ERROR:Path is invalid\n");
break;
default:
printf("ERROR:file faill");
break;
}
}
else
{
//写操作
//printf("Open the fToFile sucss! Now start Write the file.");
fToFile.Write("uSnsigned char pdata[] = {\r\n",strlen("unsigned char pdata[] = {\r\n"));//写入数组部分
while(1)
{
for(i=0; i < utFLength; i++)
{
fToFile.Write("0x",strlen("0x"));
char cTemp ; //临时变量
cTemp = _T(cBuffer[i]); //sprintf(ret+strlen(ret),"%02X",str[i]);
CString str;
str.Format("%x",cBuffer[i]);
afxDump << str << "\n "; //char Char = TEXT(sprintf(cTemp, "%c", cBuffer[i]));
//MessageBox(str);
//cTemp = cBuffer[i];
//_T(sprintf(buf, "字符串"))
//_T(sprintf(buf, "%c", 字符))
//char Bhigh = (cTemp&0xf000)>>4;
//char Blow = (cTemp&0x0f00); //fToFile.Write(&Bhigh,1);
//fToFile.Write(&Blow,1); fToFile.Write(&cTemp,2);
//fToFile.Write("AF",strlen("AF"));
fToFile.Write(",\n",strlen(",\n"));
}
//fToFile.Write(cBuffer,utFLength);
fToFile.Write("};\r\n",strlen("};\r\n"));
fToFile.Close();
break;
}
}
fMyFile.Close(); if(cBuffer != NULL)
{
delete cBuffer;//释放内存
cBuffer = NULL;
} }}
解决方案 »
- CHttpFile如何发送纯字符串的问题
- 文件或目录权限复制问题
- 如何把状态栏的图标显示为16x16的
- 本人欲开发一款小软件,想请高手帮忙,具体事宜请联系:531508022
- 如何学习ATL?
- free char*类型的空间时,是不是 free到 第一个 0 处??
- VC中用ADO如何得到已知表的所有字段类型??
- 如何利用com接口将mail 地址设到outlook2000的TO CC,BCC中
- 请问VC中Win32sdk编程如何调用ACCESS数据库?
- 如何解决在VC中导入.bmp图片时的一个问题?谢谢!
- 求助,在picture控件上插入背景图片,然后实现点的移动,可是一段时间后,点的移动轨迹出现了,不能刷新,为什么?万分感谢!
- 发帖的时候怎么插入图片
这也能通过编译?而且不知道什么意思。
你的cTemp明明是一个字节,写入的时候fToFile.Write(&cTemp,2);为什么要写入两个字节?况且这个值似乎没有被修改过。
其实要把数值以文本方式写入文件,用fprintf倒是很方便,直接格式化写入就可以了。
for(i=0; i < utFLength; i++)
{
fToFile.Write("0x",strlen("0x"));
char *cTemp ; //临时变量
sprintf(cTemp,"%c", cBuffer[i]);
CString str;
str.Format("%x",cBuffer[i]);
afxDump << str << "\n ";
//cTemp = _T(str);
//char Char = TEXT(sprintf(cTemp, "%c", cBuffer[i]));
//MessageBox(str);
//cTemp = cBuffer[i];
//_T(sprintf(buf, "字符串"))
//_T(sprintf(buf, "%c", 字符))
fToFile.Write(cTemp,1);
//fToFile.Write("AF",strlen("AF"));
fToFile.Write(",\n",strlen(",\n"));
}
{
CFile f;
CFileException e;
char* pFileName = "C:\\1.txt";//里面输入 “123456789”
if( !f.Open( pFileName, CFile::modeRead | CFile::typeBinary, &e ) )
{
#ifdef _DEBUG
afxDump << "File could not be opened " << e.m_cause << "\n";
#endif
return ;
} DWORD dwFileLen = f.GetLength();
BYTE *pbyData = new BYTE[dwFileLen];
f.ReadHuge(pbyData,dwFileLen);
f.Close();
//文件数据已经在pbyData所指的内存里了
if( !f.Open( "c:\\2.txt", CFile::modeCreate | CFile::modeWrite, &e ) )
{
#ifdef _DEBUG
afxDump << "File could not be opened " << e.m_cause << "\n";
#endif
return ;
}
char szData[10];
for(DWORD i=0;i<dwFileLen;i++)
{
memset(szData,0,10*sizeof(char));
sprintf(szData, "0x%X", *(pbyData+i) ); //大写16 进制
f.Write(szData,10);
f.SeekToEnd();
}
f.Close();
delete [] pbyData;
//2.txt中的值为,是1.txt中16进制数据
//0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39
}
// TODO: Add your control notification handler code here
CString pFileName1("D:\\prj\\work\\Project\\test.dat"); //定义文件名
CString pFileName2("D:\\prj\\work\\Project\\test.c"); //定义文件名
UINT utFLength;//保存文件长度
CFile fMyFile; //读文件对象
CFile fToFile; //写文件对象
CFileException Except;//文件异常变量
CClientDC dc(this);
int i = 0;
if(!fMyFile.Open(pFileName1,CFile::modeRead|CFile::typeBinary))//只读的形式打开二进制文件/*CFile::typeBinary*/
{
TRACE("Can't open file %s\n",pFileName1);
}
else //打开成功
{
////////////////////////////////////////////////////////////////
//读取字符操作
utFLength = fMyFile.GetLength(); //获取文件长度
char *cBuffer = new char[utFLength]; //缓冲区
if(cBuffer == NULL)
{
return;
}
for(int i=0; i < utFLength ;i++)
fMyFile.Read(cBuffer,utFLength); //从二进制文件中读取数据到缓冲区(内存)cBuffer中
if(!fToFile.Open(pFileName2,CFile::modeCreate|CFile::modeReadWrite,&Except))//打开或创建文件test.c
{
switch(Except.m_cause)//判定文件异常的原因
{
case CFileException::fileNotFound:
printf("ERROR:Fllc nol foint\n");
break;
case CFileException::badPath:
printf("ERROR:Path is invalid\n");
break;
default:
printf("ERROR:file faill");
break;
}
}
else
{
//写操作
fToFile.Write("unsigned char g_headerBuf[512] = \r\n{\r\n",strlen("unsigned char g_headerBuf[512] = \r\n{\r\n"));//写入数组部分
while(1)
{
for(i=0; i < utFLength; i++)
{
fToFile.Write("0x",strlen("0x"));
char cTemp = cBuffer[i];
char bHigh = (cTemp&0xf0)>>4;
char bLow = cTemp&0x0f;
char CHigh;
char CLow;
int j=0;
short int iHexArray[16] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
char CharArray[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
/*==========================================写高位=================================*/
for(j=0;j<16;j++)
{
if(bHigh == iHexArray[j])
{
CHigh = CharArray[j];
break;
}
}
fToFile.Write(&CHigh,1); // 写操作
/*==========================================写低位=================================*/
for(j=0;j<16;j++)
{
if(bLow == iHexArray[j])
{
CLow = CharArray[j];
break;
}
}
fToFile.Write(&CLow,1);
fToFile.Write(",\r\n",strlen(",\r\n"));
}
fToFile.Write("};\r\n",strlen("};\r\n"));
fToFile.Close();
break;
}
}
fMyFile.Close();
if(cBuffer != NULL)
{
delete cBuffer;//释放内存
cBuffer = NULL;
}
}