我一直在寻找这个答案,但我找不到解决方案。基本上我正在尝试读取和写入计算机的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
,但我发现很难理解如何实现它,并且它也缺乏资源。有没有解决这个问题的方法,因为它现在真的让我回头。非常感谢,
杰克
答案 0 :(得分:5)
您的代码正在打开文件两次:
FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL) /* Second open, leaks FILE *! */
这可能会导致错误,因为Windows可能会对允许多次打开文件感到挑剔。第二行应为:
if(fp == NULL)