2016-06-20 56 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

相关问题