如何打开该文件?

时间:2013-11-03 10:03:32

标签: c++

我们的计算机科学老师给了我们一个项目,用C ++创建一个功能齐全的控制台应用程序。我已经开始做到了。但我在某个时候陷入困境。我想使用open()函数打开一个可编辑的文本(.txt)文件。但我为所有文本文件创建了一个单独的文件夹。所以我知道我必须在open()函数中提供一个完整的目录名,在我的例子中是“F:\ My Work \ C ++ \ My School Project \ Text Files”。但是,如果我在pendrive中复制“My School Project”文件夹并将其带到我朋友的家中并尝试在他的计算机上运行该程序,该怎么办?它会起作用吗?我的意思是他没有必要在'F'目录中有'My Work'文件夹,或者他可能没有'F'磁盘。所以在那种情况下地址会改变。那么我必须在open()函数中输入什么地址,以便每次我尝试在其他计算机上运行程序时,程序都可以在每台计算机上工作,而无需更改open()函数中的地址...源代码可能对解释有帮助...谢谢!!!

2 个答案:

答案 0 :(得分:3)

您应该使用相对路径,而不是使用绝对路径。从文件夹运行程序时,这是您的工作路径。然后,您可以通过仅将文件名或文件夹和文件名传递给open函数来打开此文件夹或此文件夹的子文件夹中的文件。因此,只需打开C:\...,而不是打开someFolder\someFile.txt

答案 1 :(得分:2)

您可以考虑将您解析的文件名作为命令行参数的一部分,如下所示:

int main(int arg, char* args[]) {

   FILE *newfile = fopen( args[1], "r");

}

您无法确定所有计算机都正确映射了F:驱动器,因此最好使用它 通用命名约定(UNC)名称,即“\ server \ share \ path \ file”。

实现同样目标的一个好方法是使用Boost Filesystem,但这会使你的代码变得更复杂,因为你依赖于一个外部库(读:学生可能会感到困惑)。 Boost Filesystem的文档可在此处找到:http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm