这是一个非常奇怪的错误。
我正在使用 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。
这里发生了什么?为什么只有在资源管理器中打开窗口时运行它才能找到它?