| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 389 人关注过本帖
标题:关于一个删除有问题的二进文件
只看楼主 加入收藏
lixuhao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-12-9
收藏
 问题点数:0 回复次数:0 
关于一个删除有问题的二进文件



#include<iostream.h>
#include<stdlib.h>
#include<fstream.h>
#include<string.h>
#include <stdio.h>
struct classmate
{
char name[20];
char sex[8];
char borntime[20];
char bornaddress[20];
char homeaddress[40];
char postnumber[20];
char phonenumber[20];
int m;

};

char filename[20]="f:\\classmate.dat";

void delestu(fstream f) // 删除学生文件中指定姓名的记录。
{
char nam[20]; //工作变量,
classmate t;
cout<<"要删除的学生姓名:"; cin>>nam; cout<<endl;
t=search( f, nam);
if(t.m==-1)
{
cout<<"无此学生!"<<endl; return;
}
else
{
ofstream iofile(filename,ios::binary|ios::out);// 二进制写方式打开文件
if(!iofile){ cout<<"文件temp.dat打开失败"<<endl; return;}
f.seekg(0,ios::beg); // 读指针移动到文件头。
f.read((char*)&t,sizeof(classmate)); // 读一个学生的信息。
while(!f.eof())
{
if(strcmp(t.name,nam)!=0) //当前读出的记录不是要删除的记录
{
iofile.write((char*)&t,sizeof(classmate)); // 写一个学生的信息
f.read((char*)&t,sizeof(classmate)); // 再读一个学生的信息
}
else f.read((char*)&t,sizeof(classmate)); // 忽略要删除的记录,读下一个学生的信息
}
iofile.close(); // 关闭临时文件,文件关闭后才能改名。
f.close(); //关闭原文件,文件关闭后才能删除。
remove(filename); //删除旧文件。
cout<<"删除成功!"<<endl;
rename("f:\\temp.dat",filename); //用旧文件名重新命名临时文件。
f.open(filename,ios::binary|ios::in|ios::out); //打开删除了记录后的文件。

}
}

为什么会一下删除我的全部记录????????????????????????????

搜索更多相关主题的帖子: 文件 删除 
2006-06-18 00:18
快速回复:关于一个删除有问题的二进文件
数据加载中...
 
   



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

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