留言板编程(CFile函数与动态分配)

这是一个最简单的实例,这是一个自己从来未曾使用过的内存分配实例,这是一个自己从未曾保存文件的实例,这是一个出现内存错误的实例
/*以下代码将文件的内容转存进其他的文件
在这里注意以下几点:
1.尝试理解捕获打开文件异常,同时知道如何捕获异常
2.如何动态分配内存空间,以及在使用完毕后释放
3.如何正确使用MFC提供的文件对话框
*/  
//以下的代码是:将文件的内容转存进另一个指定的文件
void CMyDlg::OnSavebutton() 
{
 // TODO: Add your control notification handler code here
 CFile file;
 CString m_path="D:\\test.txt";
 if(!file.Open(m_path,CFile::modeRead))
 {
  MessageBox("Opening file error1!");
  return ;
 }
 int len=file.GetLength();
 //
 char* buffer=new char[len+1];//容易导致缓冲区溢出
问题在于下面使用了buffer[len]=‘\0‘;,已经再次提醒自己
 if(!buffer)
 {
  MessageBox("Allocating fail!");
  return;
 }
 else
 {
// 认真检测查看程序如何实现文件的异常处理
  try
  {
   file.Read(buffer,len);
  }
  catch(CFileException* e)
  {
   MessageBox("Reading file error");
   file.Close();
   e->Delete();
   return ;
  }
  //
  buffer[len]=‘\0‘;
 }
 file.Close();
 m_path="d:\\total.txt";
 if(!file.Open(m_path,CFile::modeWrite|CFile::modeCreate))
 {
  MessageBox("Opening file error2");
  return ;
 }
 file.SeekToEnd();//将文件指针指向文件末尾,进行写入
 file.Write(buffer,len);
 file.Close();
 delete buffer;
}
 
//打开文件,读取进编辑框中
void CMyDlg::OnRead() 
{
 // TODO: Add your control notification handler code here
 CFile file;
 if(!file.Open("D:\\test.txt",CFile::modeRead))
 {
  MessageBox("Opening file error!");
  return ;
 }
    
 int len=file.GetLength();
 char* buffer=new char[len+1];
 if(!buffer)
 {
  MessageBox("Allocating fail");
  return ;
 }
 else
 {
  try
  {
   file.Read(buffer,len);
  }
  catch(CFileException* e)
  {
   MessageBox("Reading file error");
   file.Close();
   e->Delete();
   return;
  }
 }
 buffer[len]=‘\0‘;
 m_note=buffer;
 delete buffer;
   file.Close();
   UpdateData(FALSE);
}
void CMyDlg::OnSavepath() 
{
 // TODO: Add your control notification handler code here
 CString msg="File save error";
 CFileDialog dlg(true,"TXT",NULL,NULL,"Text file(*.txt)|*.TXT");
 //CFileDialog dlg(true,NULL,NULL,NULL,NULL);
  if(dlg.DoModal()==IDOK)
  {
   m_path=dlg.GetPathName();
  }
  else
  {
   MessageBox(msg);
  }
}
时间: 2024-11-08 20:31:37

留言板编程(CFile函数与动态分配)的相关文章

问题:关于一个贴友的js留言板的实现

需求:用js做一个简单的留言板效果 html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> 4: <title>js实现简单留言板</title> 5: <meta http-equiv="content-type" content="text/html;charset=utf-8"> 6: <link rel=&q

php之留言板

留言板或者说一个小的博客系统有如下功能,编写标题内容并用mySQL保存,修改,删除. 1 <?php 2 @mysql_connect("localhost:3306", "root", "") or die("mysql连接失败"); 3 @mysql_select_db("php100") or die("db连接失败"); 4 //mysql_set_charset(&quo

angular留言板

今天使用angularJs写了一个留言板,简单的享受了下angular处理数据的双向绑定的方便:注释已经都写到行间了 <!DOCTYPE html> <html lang="en" ng-app="text"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet&qu

php+mysql 最简单的留言板

学完了记得动手操作. <html> <body> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> <form method = "post" action = "post.php"> 欢迎来到我的留言板!<br> name:&l

PHP学习笔记:php网络留言板

说明:代码来源<PHP和MySQL Web应用开发>一书,还有就是代码有些是经过修改的,经过我的测验全部都可以用. 通过自己的修改实现中文数据的输入,主要是编码的问题.    本来还想加添加表情的功能,不过今天时间有限,就先做到这,后续有时间再添加那个表情功能. 本示例的数据库脚本 ~~~    MySQL执行语句: source d:\test\book.sql; CREATE DATABASE IF NOT EXISTS book COLLATE 'gb2312_chinese_ci';

[PHP100]留言板(一)

[实例]我的留言板 ** 文件结构: conn.php // 数据库配置 add.php // 操作文件 list.php //列表文件 ** 步骤 建立数据库: phpmyadmin: 建立数据库(数据库名):php100_bbs 执行建表SQL: message table: ********这里必须要注意了, 我原来都不知道, 闹笑话了******************包裹 表名/字段名等等 的 根本 不是 引号(单引号/双引号都不是)************************ 那

用js做一个简单的留言板效果

html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> 4: <title>js实现简单留言板</title> 5: <meta http-equiv="content-type" content="text/html;charset=utf-8"> 6: <link rel="stylesheet&quo

dede留言板BUG解决

dede留言板刷新后空白BUG解决 DEDE留言板验证码留空或者不正确返回空白页面的解决方法 解决方法如下进入文件/plus/guestbook.php 找到代码ShowMsg("验证码不正确!",""); 改为ShowMsg("验证码不正确!","-1"); OK! 解决织梦DedeCMS留言板模块留言无法审核的问题 第一.无法控制留言是否需要审核的开关.这个一般情况下是在“系统基本参数”菜单下的“互动设置”选项里面,如果没

LigerUi框架+jquery+ajax无刷新留言板系统的实现

前些天发布了LigerUi框架的增.删.改代码,一堆代码真的也没一张图片.有的网友推荐上图,所有今天把涉及到这个框架的开源的留言板共享给大家.在修改的过程中可能有些不足的地方希望大家拍砖. 因为留言板前台展示页基本采用ajax进行操作的,所以前台页面只有一个index.html页可查看.在运行的时候请打开这个页面,压缩文件里面包括编译版本和源码,大家可以用vs调试或者IIS运行查看 只要支持.net2.0就行,数据采用了access和mssql数据两个都可以,切换的时候请在配置文件中修改.废话就