我的一个程序,使用了CFile class,但是在访问文件的时候会随机出现这样的运行失败 插图请看
http://bbs.21ic.com/upfiles/img/200612/200612208475771.gif
http://bbs.21ic.com/upfiles/img/200612/200612208503938.gif
我的程序是这样的void CFile_test::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFile file(fn,CFile::modeCreate|CFile::modeReadWrite);
int i;
for(i=0;i<100;i++)
{
int buf[bsize];
memset(buf,i,bsize*sizeof(int));
file.Write((void*)&buf,bsize*sizeof(int));
}
file.~CFile();
}我怎么也想象不出来,这样写程序有什么错误
这是.h文件
const char fn[]="文件名.bin";
const int bsize=3000;class CFile_test : public CDialog
{
DECLARE_DYNAMIC(CFile_test)public:
CFile_test(CWnd* pParent = NULL); // 标准构造函数
virtual ~CFile_test();// 对话框数据
enum { IDD = IDD_DIALOG2 };protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP()
public:
//CFile file;
CButton but1;
afx_msg void OnBnClickedButton1();
};
http://bbs.21ic.com/upfiles/img/200612/200612208475771.gif
http://bbs.21ic.com/upfiles/img/200612/200612208503938.gif
我的程序是这样的void CFile_test::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFile file(fn,CFile::modeCreate|CFile::modeReadWrite);
int i;
for(i=0;i<100;i++)
{
int buf[bsize];
memset(buf,i,bsize*sizeof(int));
file.Write((void*)&buf,bsize*sizeof(int));
}
file.~CFile();
}我怎么也想象不出来,这样写程序有什么错误
这是.h文件
const char fn[]="文件名.bin";
const int bsize=3000;class CFile_test : public CDialog
{
DECLARE_DYNAMIC(CFile_test)public:
CFile_test(CWnd* pParent = NULL); // 标准构造函数
virtual ~CFile_test();// 对话框数据
enum { IDD = IDD_DIALOG2 };protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP()
public:
//CFile file;
CButton but1;
afx_msg void OnBnClickedButton1();
};
解决方案 »
- 为什么会发生这样悲剧的事呢?
- vc++删除和打开文件
- 软件开发项目,从立项、定义、需求分析、概要设计、详细设计、编码实现、测试等,大家认为各开发阶段应该优先选用哪些配套的易用、优秀的开发工具。并且通过对优秀的开发工具的合理评价和交流,方便我们广大开发者。
- 子窗口排列的问题
- tcp连接,为啥都连接不上呢?出现100061的错误,真晕啊,为什么?
- Windows SDK学习过程中的问题
- 求<<windows核心编程>>的配套光盘
- 什么原因导致“无法解析的外部符号”
- 谁能说一下pc anywhere的原理(详细)
- 创建进程中遇到的问题
- 请问VC怎样异常处理
- 想开发一个中、英文版两个版本的中型信息系统,是先完整地开发出可正确运行的中文版后再翻译成英文版,还是中、英文版同时进行开发?
{
// ...
file.Write((void*)&buf,bsize*sizeof(int)); // 这句有误
// ...
}
我想应为:
file.Write((void*)buf,bsize*sizeof(int));
memset(buf,i,bsize*sizeof(int));
file.Write((void*)&buf,bsize*sizeof(int));??buf已经是一个指向整型数组第一个元素的指针。
&buf是指向指针的指针。
(void*)&buf,这样的转换很有问题