| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 736 人关注过本帖
标题:则么把纪录从文件中删除?
只看楼主 加入收藏
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
 问题点数:0 回复次数:8 
则么把纪录从文件中删除?
RT:
case '2':{
cout<<"请输入要查找的姓名:";
cin>>newname;
while(fp.read((char *)&t4,sizeof(t4)))
{
if(strcmp(t4.getname(),newname)==0) //t4是一个类的对象,getname()是类的公有方法
{ //用来取得私有变量name的值,和输入值比较
cout<<"已找到该纪录"<<endl;
cout<<"序号"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"住址"<<"\t"<<"电话"<<endl;
t4.disp();
//删除语句则么写;
cout<<"删除成功!"<<endl;
system("pause");
return;
}
}
break;
}
比如我所有纪录都放在"stu.dat"文件中,当strcmp(t4.getname(),newname)==0时,把当前纪录删除,则么删呢?



//只复制一部分,大家应该能看懂=。=,急急急~~~
图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-4-22 9:54:02编辑过]

搜索更多相关主题的帖子: 纪录 文件 删除 
2007-04-21 23:29
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 

则么没人会吗?


2007-04-22 09:19
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

//删除语句则么写;
//循环外用两个变量
fp.tellg()获取当前位置.用一个记录之前的,一个记录当前的位置,当读取的是要的结果时,那么之前的位置就是开始处
关闭fp(应该是ifstream吧!),创建打开ofstream ous
然后定位到开始处,然后用ous写入空格(ous.put(' ')),来删除那段文件.

当然你也可以选择把个文件存入向量,然后在向量中寻找它,然后在向量中删除,最后写入到文件,但是这样比较耗内存.


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-22 09:22
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 
cout<<"已找到该纪录"<<endl;
cout<<"序号"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"住址"<<"\t"<<"电话"<<endl;
t4.disp();
int last=fp.tellg();
fp.seekg(-sizeof(t4),ios::cur);
int first=fp.tellg();
for(int j=first;j<last;j++)
{
fp.put(' ');
}
fp.write((char *)&t4,sizeof(t4));
fp.close();
cout<<"删除成功!"<<endl;
system("pause");
return;

//删掉了,但这条纪录的地方显示乱码了

2007-04-22 09:53
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 
不会啊。。大大写一下代码吧,put和tellg都没用过,没装msdn,查不到用法

2007-04-22 09:56
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

fp是什么?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-22 10:03
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 
fstream fp;
test1 t4;
fp.open("stu.dat",ios::in|ios::out|ios::cur|ios::binary);
do
{
cout<<"请输入要查找的学生信息:1.按学号查找2.按姓名查找3.返回"<<endl;
cout<<"请选择:";
cin>>c;
switch(c)
{
case '1':{
cout<<"请输入查找的学号:";
cin>>newno;
while(fp.read((char *)&t4,sizeof(t4)))
{
if(t4.getno()==newno)
{
cout<<"已找到该纪录"<<endl;
cout<<"序号"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"住址"<<"\t"<<"电话"<<endl;
t4.disp();
/* int last=fp.tellg();
fp.seekg(-sizeof(t4),ios::cur);
int first=fp.tellg();
for(int j=first;j<last;j++)
{
fp.put(' ');
}
fp.write((char *)&t4,sizeof(t4)); */
fp.close();
cout<<"删除成功!"<<endl;
system("pause");
return;
}
}
break;
}
case 2:...
...
...

2007-04-22 10:30
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
以下是引用jqbbccn在2007-4-22 9:56:31的发言:
不会啊。。大大写一下代码吧,put和tellg都没用过,没装msdn,查不到用法

可以在线查http://msdn2.microsoft.com/zh-cn/default.aspx


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-22 12:07
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 
哪位会的,讲解一下吧
http://msdn2.microsoft.com/zh-cn/default.aspx讲的很模糊,不实用

2007-04-22 13:57
快速回复:则么把纪录从文件中删除?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017622 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved