我一直在寻找这个答案,但找不到解决方案。基本上我正在尝试读取和写入计算机 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
但我发现很难理解如何实现它并且缺乏资源以及。有什么办法可以解决这个问题,因为它目前确实让我感到沮丧。非常感谢,
jack
最佳答案
您的代码打开文件两次:
FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL) /* Second open, leaks FILE *! */
这可能会导致错误,因为 Windows 对于是否允许多次打开一个文件可能很挑剔。第二行应为:
if(fp == NULL)
关于由于权限问题,无法在 Windows 7 中使用 fopen 进行读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358001/