我使用remove()时拒绝权限

时间:2012-12-14 23:43:02

标签: c++ file permissions delete-file denied

我有这个问题。我有一个C ++程序;程序成功生成我保存记录的文件。在一个过程中,我编辑一个记录并使用不同的名称创建另一个文件。最后我关闭了这两个文件,当我尝试删除旧文件并重命名新文件时,我有这个错误:

  

删除文件时出错:权限被拒绝。

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);
}

有没有人有一些想法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

我曾经遇到过和你一样的问题,但现在我已经解决了。 使用remove()时,必须有一些文件指针没有关闭。它不必在同一个.cpp文件中,也可以在不同的文件中。

以我为例,我想我已经关闭了文件,但后来我发现我已经&#34;返回&#34; fclose()之前的句子导致文件无法正确关闭。

PS: 1.我有3个.cpp文件。

  1. 在文件(A.cpp)之后使用包含remove()的文件,该文件未正确关闭文件。

  2. 因为A.cpp没有正确关闭文件以便显示“拒绝权限”。

  3. 我的英语很差。希望这可以帮到你。