无法以追加或写入模式打开文件

时间:2016-06-20 11:33:32

标签: c windows permissions fopen

使用我用ANSI C编写的程序有问题。 当尝试在读取模式下打开一个名为fd的文件(称为fp的文件指针)时,我可以毫无问题地访问它。然后我fclose 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;
}
  

输出:错误:权限被拒绝。

2 个答案:

答案 0 :(得分:1)

使用代码中的write选项检查要打开的文件的写入权限。 if ((fp = fopen("1.txt", "w")) == NULL) &#34; 1.txt&#34;文件必须具有写权限。

答案 1 :(得分:1)

  

[...]在模式w或a +中使用fopen它会给我&#34;许可被拒绝&#34;。我无法理解为什么,我试图先用+打开,但它仍然给了我这个权限错误。

您运行该程序的用户似乎没有对相关文件的写访问权。

成功以写入和/或附加模式打开文件,运行该程序的用户需要具有写入权限。

要解决您面临的问题,

  • 调整访问权限
  • 或在已授予该文件写入权限的用户下运行该程序。