2016-06-20 55 views
2

使用我在ANSI C中編寫的程序時遇到問題。 在讀模式下嘗試打開名爲0.dat的文件(名爲fp的文件指針)時,我可以毫無問題地訪問它。然後我找到了fp。當試圖在w或a +模式下使用fopen再次打開fp時,使用perror給我「權限被拒絕」。 我不明白爲什麼,我試圖首先打開+,但它仍然給我這個權限錯誤。無法以追加或寫入模式打開文件

我在Windows 10上運行Visual Studio 2015. 試圖做一個Visual Studio重置,但它仍然無法正常工作。 這裏有一個小例子:寫來要與你的代碼寫入選項打開文件

#include <stdio.h> 

int main(void) { 
    FILE *fp = NULL; 
    if ((fp = fopen("1.txt", "w")) == NULL) { perror("error"); exit(1); } 
    fprintf(fp, "You smell"); 
    return 0; 
} 

Output: error: Permission denied.

+1

請編輯您的問題,並提供[mcve]。 – user694733

+0

我剛剛做到了,謝謝 – absentio

回答

1

檢查的權利。 if ((fp = fopen("1.txt", "w")) == NULL) 「1.txt」文件必須具有寫權限。

1

[...] using fopen in mode w or a+ it give me "permission denied". I can't get why, I tried to open in a+ firstly but it still gives me this permission error.

您運行該程序的用戶似乎沒有對該文件的寫訪問權限。

成功以寫入和/或追加模式打開文件運行該程序的用戶需要具有對其的寫入訪問權限。

要解決你所面臨的問題,

  • 要麼調整訪問權限
  • 或用戶下運行程序文件具有被授予寫訪問。
+0

Hello @alk,我的帳戶是管理員我的意思是我應該可以在Windows中的「文檔」文件夾中進行寫入訪問,這是項目所在的文件夾。 – absentio

+0

@absentio:Windows的文件鎖定是特殊的;也許另一個進程已經完全打開文件的文件? – alk

+0

我不這麼認爲。如果我記得好,那麼「w」應該創建一個不存在的文件。但是這裏fopen不會創造任何東西。也許我應該只安裝Ubuntu並告別Windows? – absentio

相關問題