2010-09-22 338 views
2

我想解析一个txt文件,我想引用它相对于我当前的目录位置。如果我将文件路径完全放入,它将会正常工作,但是我尝试使用 .. \ src \ test.txt它不会找到它。这不是正确的方式来引用一个文件相对于一个目录吗?如何用相对路径打开C文件?

如果你在一个字符串把“.. \ SRC \ test.txt的”恒任何帮助,将不胜感激

+0

显示打开该文件的位置的代码。 – nos 2010-09-22 18:06:29

回答

10

,你需要所有的反斜线让‘\ t’和‘\ s’是不翻番不被解释为转义序列。 (或者,您可以使用正斜杠代替,这是更便携的。)

3

这取决于当前工作目录设置为。默认情况下,如果您从资源管理器双击应用程序,则该目录是可执行文件所在的目录,或者如果从命令提示符启动,则shell所在的当前路径。

如果test.txt位于c:\ code \ app \ src并且您的应用程序位于c:\ code \ app中,则相对路径“.. \ src \ test.txt”将以c: \ code \ src \ test.txt(如果从资源管理器启动)。

尝试打印_getcwd的输出之前,尝试打开文件以验证哪个目录是当前工作目录。

0

假设你的目录结构如下:

 
project 
+---src 
|  test.txt 
|  proj.c 
\---bin 
     a.out <- Working directory 

您的相对路径是正确的;你的工作目录实际上与文本文件在同一层。

如果你真的意味着文件是一个目录,你说,像这样的:(注:这是一个尴尬的项目结构)

 
project 
\---src 
    | test.txt 
    | proj.c 
    \---bin 
      a.out 

或者是这样的:(更有意义)

 
project 
| test.txt 
+---src 
|  proj.c 
\---bin 
     a.out 

然后你需要的路径是"../test.txt",或者等价地,"../../project/test.txt"

一个更好的位置将是一个数据目录,所以你的路径将是"../data/test.txt"

+0

Blech!为什么我的标签无法正常工作? – 2010-09-22 18:27:21

0

我想这是VS vbuild一个窗口(给出的背面斜线路径)

VS会已经把二进制的类似项目\ BIN \调试。当你在VS中运行它时,它会将当前的WD设置为二进制文件的位置。

所以

一)文件复制到正确的地方

B)更改项目属性调试安装说设置当前路径到你期望的文件是(相对的位置)