由于权限问题,无法在 Windows 7 中使用 fopen 进行读写

标签 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 但我发现很难理解如何实现它并且缺乏资源以及。有什么办法可以解决这个问题,因为它目前确实让我感到沮丧。非常感谢,

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/

相关文章:

c++ - 如何获取打印机端口详细信息?

java - 在项目中包含 JNA 代码 - 编译错误

c# - 找不到来源,但无法搜索到部分或所有事件日志

c# - 在 Windows7 上禁用 Ctrl+Alt+Del 组合

c - 使用 sscanf 检查范围 '0 ' , '9' ,'.' .'+ and ' -' 符号之间的数字

c - 指向结构体中函数的指针

c - 将字符数据类型打印为整数数据类型

python - 如何使用Python将文件/目录从Linux远程复制到AWS EC2实例上的Windows?

交互式 ocaml 解释器与另一个进程之间的通信

windows-7 - Jenkins 无法识别 slave 处于关闭状态,因此不允许它重新连接