2012-01-11 88 views
3

当我提供相对路径时,用fopen()打开的文件失败。我正在Visual Studio 2010的Windows计算机上运行此代码。用相对路径打开的文件失败

const char* OUTPUT_FILE = "output/PERFORMANCE.txt"; 
FILE* f = fopen(OUTPUT_FILE, "w"); 

这种指定相对路径的方式不正确吗?我应该使用“\”分隔符吗?

指定使用相同格式的绝对路径工作正常。 (例如“C:/output/PERFORMANCE.txt”)

+0

它应该工作。问题是相对于什么?你的工作目录是什么? – Mysticial 2012-01-11 02:22:29

+2

'.exe'运行的目录可能不是您期望的目录。那么你的相对路径是错误的。 – 2012-01-11 02:53:41

+0

当我将OUTPUT_FILE指定为“PERFORMANCE.txt”时,将在与.exe相同的目录中创建新文件。所以我猜工作目录和.exe目录是一样的。 – arjunurs 2012-01-11 15:54:20

回答

0

output子目录是否存在?打开文件进行写入将创建文件,如果它不存在,但不是它的路径。 。

+0

是的,输出目录存在 – arjunurs 2012-01-11 15:51:46

2

检查您目前在哪个目录使用Windows至少有两种方式:

  1. _getcwd
  2. GetCurrentDirectory

确保你是在你认为你所在的目录,并确保该目录中存在目录output,否则您需要创建它。在Windows中,至少有两种方式:

  1. _mkdir
  2. CreateDirectory

文件将无法打开(甚至写),如果任何中间目录不存在。如果您没有对目标目录的权限,该文件也可能无法打开。