除去( “<文件名>”);删除文件时出错:权限被拒绝</filename>

时间:2015-02-12 07:49:24

标签: c permission-denied delete-file

我在这个小代码中遇到了问题。它不会删除名为adatok.txt的文件。在这个程序中,我在DIAK(我的结构)形式的文件中有很多信息,所有这些信息都有一个数字(diak.sorszam)。当我想删除我的一个信息时,我输入了torol中存储的信息编号,之后我将有用的信息存储在名为sadatok.txt的文件中,关闭这两个文件后我要删除adatok.txt,并将sadatok.txt重命名为adatok.txt,但由于某些原因,屏幕上显示SucsessfullError删除文件:权限被拒绝...

...
    system("cls");
    int torol,stat=0;
    printf("\n\n\tDeleting number:");
    scanf("%d",&torol);
    FILE *fp, *sfp;
    fp = fopen("adatok.txt","rb");
    sfp = fopen("sadatok.txt","ab");
    DIAK diak;
    while(fread(&diak,sizeof(DIAK),1,fp)!=0){
        if(diak.sorszam==torol){
            stat=1;
        }else{
            fwrite(&diak,sizeof(DIAK),1,sfp);
        }
   }
   fclose(sfp);
   fclose(fp);
   system("cls");
   if(stat==1){
        printf("\n\n\tSucsessfull");
        if(remove("adatok.txt")!=0){
            perror("Error deleting file");
        }else{
            perror("File successfully deleted");
        }
        rename("sadatok.txt","adatok.txt");
   }else{
        printf("\n\n\tUnsucsessfull");
        if(remove("sadatok.txt")!=0){
            perror("Error deleting file");
        }else{
            perror("File successfully deleted");
        }   
   }
   printf("\n\tPress a buton");
   getch();
   ...

2 个答案:

答案 0 :(得分:2)

可能重复:"Error deleting file: Permission denied" with remove in C++

您应该添加\n以改善输出跟踪:

printf("\n\n\tSucsessfull\n");

然后:

  • 尝试将文件的绝对路径设为remove()
  • 检查正在运行的程序的权限

答案 1 :(得分:0)

您可能没有权限删除该文件。使用rwx

将运行程序的文件和目录的权限更改为chmod