この問題があります。C++ プログラムがあります。プログラムは、レコードを保存するファイルを正常に作成します。ある手順では、1 つのレコードを編集し、別の名前で別のファイルを作成します。最後に両方のファイルを閉じ、古いファイルを削除して新しいファイルの名前を変更しようとすると、次のエラーが発生します。
ファイルの削除中にエラーが発生しました: アクセス許可が拒否されました。
void SoldDevices()
{
int soldQuantity = 0;
char soldModel[20];
ElShop tempVar;
FILE *newFile;
printf("Enter model of sold device: ");
gets(soldModel);
file = fopen(fileName, "r+");
fread(&shop, sizeof(shop), 1, file);
while (!feof(file))
{
if (strcmp(shop.model, soldModel) == 0)
{
tempVar = shop;
break;
}
fread(&shop, sizeof(shop), 1, file);
}
fclose(file);
printf("Enter how much devices are sold: ");
scanf("%d", &soldQuantity);
while (tempVar.quantity < soldQuantity)
{
printf("No items available!\n");
printf("Enter how much devices are sold: ");
scanf("%d", &soldQuantity);
}
tempVar.quantity = tempVar.quantity - soldQuantity;
printf("%d\n", tempVar.quantity);
file = fopen(fileName, "rb");
newFile = fopen("New", "wb");
fread(&shop, sizeof(shop), 1, file);
while (!feof(file))
{
if(strcmp(soldModel, shop.model) == 0)
{
fwrite(&tempVar, sizeof(shop), 1, newFile);
}
else
{
fwrite(&shop, sizeof(shop), 1, newFile);
}
fread(&shop, sizeof(shop), 1, file);
}
fclose(newFile);
fclose(file);
if( remove( fileName ) != 0 )
perror( "Error deleting file" );
else
puts( "File successfully deleted" );
rename("New", fileName);
}
誰かが問題を解決するためのアイデアを持っていましたか?