C 无法在追加或写入模式下打开文件

C 无法在追加或写入模式下打开文件,c,windows,permissions,fopen,C,Windows,Permissions,Fopen,我在使用ANSI C编写的程序时遇到问题。 当尝试在读取模式下打开名为0.dat的文件(名为fp的文件指针)时,我可以毫无问题地访问它。然后我失去了fp。当尝试在模式w或a+下再次使用fopen打开fp时,它会使用perror给我“权限被拒绝”。 我不知道为什么,我试图首先在a+中打开,但它仍然给我这个权限错误 我正在Windows 10上运行Visual Studio 2015。 尝试执行Visual Studio重置,但仍然无法工作。 下面是一个简单的例子: #include <

我在使用ANSI C编写的程序时遇到问题。 当尝试在读取模式下打开名为0.dat的文件(名为fp的文件指针)时,我可以毫无问题地访问它。然后我失去了fp。当尝试在模式w或a+下再次使用fopen打开fp时,它会使用perror给我“权限被拒绝”。 我不知道为什么,我试图首先在a+中打开,但它仍然给我这个权限错误

我正在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;
}
#包括
内部主(空){
FILE*fp=NULL;
if((fp=fopen(“1.txt”,“w”))==NULL){peror(“error”);exit(1);}
fprintf(fp,“你的气味”);
返回0;
}
输出:错误:权限被拒绝


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

[…]在模式w或a+下使用fopen会给我“拒绝许可”。我不知道为什么,我试图首先在a+中打开,但它仍然给我这个权限错误

运行该程序的用户似乎没有对该文件的写入权限

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

为了回避你面临的问题

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

请回答您的问题并提供。我刚刚完成了,谢谢Shello@alk,我的帐户是管理员。我的意思是我应该对windows中的“Documents”文件夹有写权限,该文件夹是项目所在的文件夹。@absentio:windows的文件锁定是特殊的;也许另一个进程已经以独占方式打开该文件以供写入?我不这么认为。如果我记得很清楚,“w”应该创建一个不存在的文件。但在这里,fopen没有创造任何东西。也许我应该安装Ubuntu并和Windows说再见?