指针和数组的问题(文件操作CFile)
时间:2011-12-13
来源:互联网
根据孙鑫的vc++写的程序:
' [ l9 M+ v3 o+ V, x( C这部分功能已经实现
1 c ~8 X+ H; K8 Y. D* x8 s' l' {我现在要在此基础上扩展到我自己的应用程序,调用自己的API程序,遇到问题了。$ E/ r; ~% _3 V% ~
之前我的API程序,都是定义定长的buffer然后调用API函数:xChannelIOWrite(hChannel,uint32_t ulAreaNumber,uint32_t ulOffset,uint32_t ulDataLen,void* pvData, uint32_t ulTimeout);其中 ulDataLen是我定义的buffer的长度void* pvData这个参数就是我定义的数据名,& x1 M7 U8 x+ v
比如:buffer定义为:unsigned char abWriteIOBuffer[100] = {0};+ `8 r" \; C1 r! B* g( `1 X( ~
相应的API函数就是xChannelIOWrite( hChannel,0, 0,100 , abWriteIOBuffer,10)
" S8 |" y$ k1 e" o我现在把两者结合起来时就有问题了,CFile里面buffer是定义的指针形式,我的应用程序是数组的,我把应用程序改了,API调用就返回错误,本人新手指针和数组这块不是很清楚求指教!!
复制内容到剪贴板
DWORD dwFileLen;
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0";
//fileDlg.m_ofn.lpstrDefExt="doc";
if (IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead|CFile::typeBinary);
//char *pBuf;
//DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
}
然后在调用另存为函数实现文件的保存1 ~) }7 `& i2 L0 [2 C代码:
char *pBuf;DWORD dwFileLen;
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0";
//fileDlg.m_ofn.lpstrDefExt="doc";
if (IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead|CFile::typeBinary);
//char *pBuf;
//DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
}
复制内容到剪贴板
fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0";
if (IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeCreate|CFile::modeWrite);
file.Write(pBuf,dwFileLen);
file.Close();
//MessageBox(pBuf);
}
代码:
CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0";
if (IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeCreate|CFile::modeWrite);
file.Write(pBuf,dwFileLen);
file.Close();
//MessageBox(pBuf);
}
' [ l9 M+ v3 o+ V, x( C这部分功能已经实现
1 c ~8 X+ H; K8 Y. D* x8 s' l' {我现在要在此基础上扩展到我自己的应用程序,调用自己的API程序,遇到问题了。$ E/ r; ~% _3 V% ~
之前我的API程序,都是定义定长的buffer然后调用API函数:xChannelIOWrite(hChannel,uint32_t ulAreaNumber,uint32_t ulOffset,uint32_t ulDataLen,void* pvData, uint32_t ulTimeout);其中 ulDataLen是我定义的buffer的长度void* pvData这个参数就是我定义的数据名,& x1 M7 U8 x+ v
比如:buffer定义为:unsigned char abWriteIOBuffer[100] = {0};+ `8 r" \; C1 r! B* g( `1 X( ~
相应的API函数就是xChannelIOWrite( hChannel,0, 0,100 , abWriteIOBuffer,10)
" S8 |" y$ k1 e" o我现在把两者结合起来时就有问题了,CFile里面buffer是定义的指针形式,我的应用程序是数组的,我把应用程序改了,API调用就返回错误,本人新手指针和数组这块不是很清楚求指教!!
作者: shixi2011 发布时间: 2011-12-13
等下紫风兄来看看
作者: Bill_Hoo 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28