orange688 2020-07-01 23:41 采纳率: 0%
浏览 97

这个change函数,我要对文本文件的内容进行替换,为什么原来的 内容没有被删除掉,应该怎么修改。

void change() {
int item, math, english, physics;//选择修改项,修改年龄
student stu;
int flag;
char str[20];//暂时存修改内容
cout << "请输入要查询的学生的学号" << endl;
cin >> str;
fstream file("student.txt", ios::binary | ios::in);//打开文件存取学生对象的文件
while (!file.eof())
{
file.read((char*)&stu, sizeof(student));//读取文件
if (strcmp(stu.number, str) == 0)//如果存在学生信息输出
{
flag = 1;
cout << "学生学号 学生姓名 数学成绩 英语成绩 物理成绩" << endl;
cout << stu.number << "\t " << stu.name << " \t" << stu.math << "\t" << stu.english << "\t" << stu.physics << " \t" << endl;
break;
}
}
if (flag != 1)//如果不存在则提示无该学生
cout << "该学生不存在" << endl;
file.close();
cout << "------------------\n";
cout << "1.修改姓名\n";
cout << "2.修改数学成绩\n";
cout << "3.修改英语成绩\n";
cout << "4.修改物理成绩\n";
cout << "5.退出本菜单\n";
cout << "------------------\n";
while (1)
{
cout << "请选择子菜单编号:";
int item;
cin >> item;
switch (item)
{
case 1:
cout<<"请输入新的姓名:\n";
cin >> str;
strcpy(stu.name, str); break;//为学生姓名赋新值
case 2:
cout<<"请输入新的数学成绩:\n";
cin >> math;
stu.math = math; break;//为学生数学成绩赋新值
case 3:
cout<<"请输入新的英语成绩:\n";
cin >> english;
stu.english = english; break;//为学生英语成绩赋新值
case 4:
cout<<"请输入新的物理成绩:\n";
cin >> physics;
stu.physics = physics; break;
case 5: {
fstream file("student.txt", ios::out | ios::binary | ios::app);
cout << "修改成功" << endl;
file.write((char*)&stu, sizeof(student));//把新的学生信息写入文件
file.close();
return;
}
default:cout<<"请在1-5之间选择\n";
}
}
}

  • 写回答

1条回答 默认 最新

  • wlj1234 2020-07-02 11:14
    关注

    代码中
    file.read((char*)&stu, sizeof(student));
    file.write((char*)&stu, sizeof(student));

    读取方法和写入是错误的
    参考
    https://ask.csdn.net/questions/1090116
    的回答

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c