這是一個很奇怪的錯誤。Fopen返回null,除非在那裏探討?
我使用Visual Studio 2012,並在C++項目(作爲一個C項目的容器),我加載在這樣一個文件:
const char* fname = "SomeFile.csv";
if(!(fp = fopen(fname, "r")))
{
printf("Error! Could not open %s!\n",fname);
return;
}
的CSV是在同一個文件夾中.EXE,這就是這個程序的意圖。
1.當我在調試中運行它時,它無法讀取CSV。
2.當我輸入文件的完整路徑名時,它會正常工作並加載CSV。
3.當我轉到Windows資源管理器中的輸出文件夾並運行.exe時,它正確加載了CSV。
4.現在這裏是怪異的部分。當我到另一個文件夾(其他任何地方),然後將包含.exe的完整路徑粘貼到Windows資源管理器中時,它會啓動該程序,但它無法讀取CSV。
作爲一個警告,如果我已經在資源管理器中加載文件夾,但在VS2012調試器中運行它,它也無法加載CSV。
這是怎麼回事?爲什麼只有在瀏覽器中打開窗口時才能找到它?
您需要將VS上的工作目錄設置爲文件所在的文件夾。 – imreal
@Nick在大多數其他語言中,文件打開命令的默認位置是要運行的程序的位置。在C中不是這種情況嗎? – Xantham
這取決於IDE。這方面沒有標準。 – imreal