2012-07-06 80 views
2

我一直在寻找一段时间才能找到答案,但找不到解决方案。基本上我试图读取和写入我的电脑的C盘中的文件。但是,因为它是Windows 7,它选择在背后痛苦,而不是允许我的C程序来做到这一点。我试图以管理员模式运行它,并尝试使用不同的目录。 当下面的代码运行:由于权限,无法在Windows 7中使用fopen进行读取或写入

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

返回的错误是“错误13权限被拒绝”。我知道微软不太喜欢使用fopen,因为它倾向于使用fopen_s,但我发现在理解如何实现它时遇到困难,而且它也缺乏资源。有没有解决这个问题的方法,因为它现在真的让我回头了。大加赞赏,

杰克

+0

您尝试过哪些路径?在之前的Windows中,Unicode路径一直是fopen的一个问题。 – stefan 2012-07-06 07:54:21

+0

那么它被输入为单个用户削减。例如“C:\ dtm100m \”然后放入一个char数组。这是什么意思/ – Jackter 2012-07-06 08:04:24

+0

不是真的。请列出失败的''strIn''的一些例子。 – stefan 2012-07-06 08:13:03

回答

5

您的代码打开文件两次:

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

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

if(fp == NULL) 
+1

如果我正确记得fopen()的Windows实现以独占模式打开文件。 – Luke 2012-07-06 13:54:47

相关问题