下面是代码:的fopen回报没有这样的文件或目录,文件存在
FILE* json = fopen("D:\\platformer\\resources\\maps\\test.json", "r");
if (json == 0)
{
// No such file or directory
String aa = strerror(errno);
}
它总是返回No such file or directory
,但它的存在:
下面是代码:的fopen回报没有这样的文件或目录,文件存在
FILE* json = fopen("D:\\platformer\\resources\\maps\\test.json", "r");
if (json == 0)
{
// No such file or directory
String aa = strerror(errno);
}
它总是返回No such file or directory
,但它的存在:
的代码,你已经证明没有按实际上证明fopen
失败。它可能已经成功了,并且errno
刚刚发生了一些与之前发生的相关的残余错误。在您发现json
为空后,您应该只查看errno
。
做到了,json为null。这就是为什么我使用errno和strerror – Pacha
json
是成功的开放
if (json == NULL) // or 0
printf ("Error opening file: %s\n",strerror(errno));
所以非零,
//clean errno
errno = 0;
FILE* json = fopen("D:\\platformer\\resources\\maps\\test.json", "r");
if (json == 0) <-- Fix
{
String aa = strerror(errno);
}
使用C++的类,而不是解决它。
ifstream myfile;
myfile.open("D:\\platformer\\resources\\maps\\test.json");
if (myfile.is_open())
{
// parsing. now it works.
}
它应该使用fopen。为什么不呢?不知道。无论如何,恭喜您解决您的问题。 –
我知道这真的很奇怪。可能它与我正在使用的库有关 – Pacha
您有权限阅读吗?它是否被另一个锁定它的进程打开? – tohava
是的,它有权限阅读,并且不会被任何人打开。我用记事本创建了它,并尝试关闭记事本 – Pacha
你的测试应该是'if(json == 0)',或者更好'if(json == NULL)'。什么是“字符串”?除非你自己定义它,否则C中没有这种类型。请向我们展示您实际编译和执行的真实代码。 –