读书人

vc中文本文件修改的好方法

发布时间: 2012-03-05 11:54:02 作者: rapoo

求高手指教vc中文本文件修改的好方法
在文本文件中我存储了结构体(学生信息记录 姓名 学号 成绩)
比如文本文件中的内容为:

MaWenTao
99001
88
LiMing
99002
92
WangFang
99003
89

现在我要修改LingMing的信息记录 比如 成绩 92 改为 95,请大家指教,我想说明的是我不能使用数据库,谢谢!

[解决办法]
用字符串匹配到需要改的结构头,然后读出修改结构内容,再写到文件中,不知行不
[解决办法]
就是文件内容查找咯 ~~
[解决办法]
可以定义一个结构体,
三个成员: 姓名 学号 成绩

用 CFILE 的Read方法 或者是 标准库的 fread 函数,
或者是 ifsteam 的read 方法 ...

每次读取一个结构体的内容,
然后判断 姓名 是否是需要修改的记录,
如果是则进行修改,
不是则继续读取下一记录的信息。

修改完毕后,把该记录写回到文件中就可以了,
注意调整文件指针的位置 ~~
[解决办法]
如果是不等长修改,就只能每次重写整个文件
[解决办法]
你试试吧
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

typedef struct{
long long ID;
string name;
int r1,r2,r3;
}data,*pdata;

int main()
{
data d;
d.ID=5050379001;
d.name= "4k.grubby ";
d.r1=85;
d.r2=87;
d.r3=83;
data d0,d1;
d0.ID=5050379002;
d0.name= "john ";
d0.r1=d0.r2=d0.r3=90;
d1.ID=5050379003;
d1.name= "tom ";
d1.r1=d1.r2=d1.r3=87;
ofstream File( "student.db ",ios::binary);//新建二进制文件
File.write((const char*)(&d),sizeof(data));
File.write((const char*)(&d0),sizeof(data));
File.write((const char*)(&d1),sizeof(data));
d1.name= "jerry ";//修改数据
File.seekp(2*sizeof(data));//移动到第三组数据处
File.write((const char*)(&d1),sizeof(data));//覆盖
File.close();
ifstream iFile( "student.db ",ios::binary);
data d2;
iFile.seekg(sizeof(data)*2);
iFile.read((char*)(&d2),sizeof(data));
cout < < d2.name < <d2.ID < < endl;
iFile.close();
}

读书人网 >C++

热点推荐