下面是代碼:的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中沒有這種類型。請向我們展示您實際編譯和執行的真實代碼。 –