2012-01-30 81 views
4

这是我第一次在Windows中编写C代码,一个奇怪的bug让我疯狂。fopen和windows

我试图用fopen打开一个.txt文件,它一直给我“文件不存在”的错误(它也给了我一次“没有权限”的错误)。

我的代码如下所示(没有得到任何简单的比):

FILE *file; 

if((file=fopen("C:\\Users\\ste\\Desktop\\file.txt", "r"))==NULL) 
{ 
    printf("Cannot open file.\n"); 
    puts(strerror(errno)); 

    getchar(); 
    exit(1); 
} 

我在这里失去了一些东西?提前致谢!

+3

那么,该文件是否存在,你有权读取它? ;) – 2012-01-30 14:59:28

+0

'“r”'打开阅读文件:它确实存在吗? – hmjd 2012-01-30 14:59:40

回答

13

我敢打赌,你有Windows“隐藏扩展名” 错误 功能打开。因此,名为“file.txt”的文件将作为“文件”出现在资源管理器中。如果它在资源管理器中显示为“file.txt”,则必须在硬盘上命名为“file.txt.txt”。

+0

+1哈哈,就是这样!非常适合他的非答案! – 2012-01-31 18:20:17

1

该代码本身很好,假设它所做的就是你想要的。

“r”要求文件已经存在(它不会为你创建一个),所以你需要确保路径是正确的。桌面路径是否正确,而不是另一个驱动器等?

如果由“ste”以外的用户执行权限错误,或当然如果某事如何更改了该文件路径上的权限以及如何防止访问,则会发生权限错误。

+0

好..文件存在,我是用户ste,这意味着我应该能够访问我的桌面上的文件,不是吗? :) 它可能是任何权限冲突,因为我通过Visual Studio构建它?... – STE 2012-01-30 18:21:17

-1

我使用Windows 7. 当我从IDE内启动示例程序(如Code :: Blocks中的CTRL + F10)时,它们都不起作用 - 有或没有文件扩展名(ig“file”或“file.txt “)。

但是,如果我从控制台内启动编译程序(与IDE无关)它的工作原理是,无论文件是否具有扩展名。