2015-02-12 70 views
0

我在這個小代碼部分有問題。它不會刪除名爲adatok.txt的文件。在這個程序中,我有一個以DIAK(我的結構)形式存儲的文件中的許多信息,並且所有這些信息都有一個數字(diak.sorszam)。當我想刪除我的一個信息時,我輸入存儲在torol中的信息的號碼,之後我將我的有用信息存儲在名爲sadatok.txt的文件中,並在關閉這兩個文件後,我要刪除adatok.txt,並將其重命名爲sadatok.txtadatok.txt,但對於屏幕上的某些原因出現SucsessfullError刪除文件:權限被拒絕......刪除(「<filename>」);刪除文件時出錯:權限被拒絕

... 
    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(); 
    ... 
+1

將運行程序的文件和目錄的權限更改爲rwx當函數調用成功時,不要使用'perror()'。 – cremno 2015-02-12 07:51:35

+0

在哪個操作系統上,用哪個文件系統?請編輯您的問題以改進它! – 2015-02-12 08:22:07

回答

0

您可能沒有權限刪除文件的權限。通過使用chmod

+0

要移除Linux或Posix上的文件,通常需要在其目錄中擁有「rwx」權限(但設置了粘滯位的目錄是例外) – 2015-02-12 08:21:07

+0

@BasileStarynkevitch:已更新。謝謝。 :) – 2015-02-12 08:22:46