由于权限,无法在Windows 7中使用fopen进行读取或写入

时间:2012-07-06 07:48:10

标签: c windows windows-7 fopen

我一直在寻找这个答案,但我找不到解决方案。基本上我正在尝试读取和写入计算机的c盘中的文件。然而,因为它是Windows 7,它选择背面的痛苦并且不允许我的C程序执行它。我尝试在管理员模式下运行它以及尝试使用不同的目录。 运行以下代码时:

FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL)
{ 
    printf("Error: %d (%s)\n", errno, strerror(errno));
    getchar();
}

返回错误是“错误13权限被拒绝”。我知道微软不再喜欢使用fopen因为它有利于fopen_s,但我发现很难理解如何实现它,并且它也缺乏资源。有没有解决这个问题的方法,因为它现在真的让我回头。非常感谢,

杰克

1 个答案:

答案 0 :(得分:5)

您的代码正在打开文件两次:

FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL)  /* Second open, leaks FILE *! */

这可能会导致错误,因为Windows可能会对允许多次打开文件感到挑剔。第二行应为:

if(fp == NULL)