c++remove和rename函数失败的问题
fstream file;
ofstream outfile;
char temp[100];
int choice,i;
cout << "1.修改姓名 " << "2.修改性别 " << "3.出生日期 " << "4.修改身高 " << "5.修改体重 " << "6.修改密码 " << "7.返回菜单";
cin >> choice;
switch(choice) {
case 1 :
char newname[10];
file.open(name);
if (!file) {
cerr << "open error!" ;
exit(1);
} else {
outfile.open("temp.dat",ios::out);
if (!outfile) {
cerr << "open error!" ;
exit(1);
} else {
for (i = 0;i < 2;i++) {
file.getline(temp,100);
outfile << temp << endl;
}
cout << "请输入姓名:" ;
cin >> newname;
outfile << "姓名:" << newname << endl;
file.getline(temp,100);
while (!file.eof()) {
file.getline(temp,100);
outfile << temp << endl;
}
file.close();
outfile.close();
remove(name);
if (!rename("temp.dat",newname)) {
cout <<"修改成功!" << endl;
system("pause");
system("cls");
menu();
} else {
cout << "修改失败!";
}
}
}
break;
case 2 :
file.open(name);
if (!file) {
cerr << "open error!" ;
exit(1);
} else {
outfile.open("temp.dat",ios::out);
if (!outfile) {
cerr << "open error!" ;
exit(1);
} else {
for (i = 0;i < 3;i++) {
file.getline(temp,100);
outfile << temp << endl;
}
cout << "请输入性别:" ;
cin >> sex;
outfile << "性别:" << sex << endl;
file.getline(temp,100);
while (!file.eof()) {
file.getline(temp,100);
outfile << temp << endl;
}
file.close();
outfile.close();
remove(name);
if (!rename("temp.dat",name)) {
cout <<"修改成功!" << endl;
system("pause");
system("cls");
menu();
} else {
cout << "修改失败!";
cout << errno;
}
}
}
break;
以上两个case是代码的一部分,case1的remove和rename可以运行,case2的会失败,errno值是17.
之前也发生过,后来发现是忘了关闭流了,结果这次又来了……里面的name是事先输入的名字,文件也是以名字命名的,和程序在同目录下。