void modify(char name[50]){ fstream file; int flag = 0; file.open("Contacts.dat",ios::binary|ios::in|ios::out); Contacts obj; while(file.read((char*)&obj,sizeof(obj))){ if(strcmp(obj.getName(),name) == 0){ obj.print(); cout<<"请依次输入修改信息:"<<endl; obj = Set(obj); obj.print(); file.seekp(0); file.write((char*)&obj,sizeof(obj)); flag = 1; } } if(flag == 0){ cout<<"未查询到联系人信息"<<endl; }else{ cout<<"修改成功"<<endl; } file.close(); }添加注释
//定义一个名为modify的函数,参数为名字name void modify(char name[50]) { //创建一个名为file的文件流,打开"Contacts.dat"文件,并以二进制形式读写数据 fstream file; //定义一个标记flag,用于记录是否找到要修改的联系人信息 int flag = 0; file.open("Contacts.dat", ios::binary | ios::in | ios::out); //创建一个名为obj的Contacts类对象 Contacts obj; //循环读取文件中的数据,直到读到文件结尾 while (file.read((char*)&obj, sizeof(obj))) { //如果找到了要修改的联系人信息 if (strcmp(obj.getName(), name) == 0) { //调用print函数输出obj对象的信息 obj.print(); //输出提示信息,让用户输入修改后的联系人信息 cout << "请依次输入修改信息:" << endl; //调用Set函数给obj对象赋新值 obj = Set(obj); //调用print函数输出修改后的obj对象的信息 obj.print(); //将文件指针移动到当前位置 file.seekp(file.tellg() - sizeof(obj)); //将修改后的obj对象以二进制形式写入文件中 file.write((char*)&obj, sizeof(obj)); //将标记flag置为1,表示已经找到并修改了联系人信息 flag = 1; } } //如果未找到要修改的联系人信息,则输出提示信息 if (flag == 0) { cout << "未查询到联系人信息" << endl; } else { //否则输出修改成功信息 cout << "修改成功" << endl; } //关闭文件流 file.close(); }
相关推荐

















