【发布时间】:2013-11-15 17:33:18
【问题描述】:
我的部分程序需要从用户那里获取文件路径,然后移动并重命名该文件。
如果我使用这样的相对路径:
#include <stdio.h>
int main() {
int check;
char oldname[] = "images//test_1.jpg";
char newname[] = "images//test//test_2.jpg";
check = rename(oldname, newname);
if (check == 0)
puts("Success");
else
perror("Failed");
return 0;
}
效果很好。
但如果我尝试像这样使用绝对路径:
char oldname[] = "c://path//images//test_1.jpg";
char nername[] = "c://path//images//test//test_2.jpg";
它失败并显示“失败:没有这样的文件或目录”
我确信这是一个愚蠢的错误,但无论我仔细检查我的文件路径和代码多少次,我都无法弄清楚。任何建议将不胜感激。
哦,如果这有什么不同的话,我正在使用 linux。
【问题讨论】:
-
linux没有C:\,你不需要使用双斜杠只使用双反斜杠
-
我实际上是通过我使用 PuTTY 登录的 linux 服务器进行编译,驱动器是 'H:\' 我的代码示例中的文件路径仅作为示例而不是实际路径。另外,我实际上在我的代码中错误地使用了'//',但将其更改为'\\'没有任何区别。
-
确保
image/test存在。 -
等等 - 你在 linux 机器上编译然后在哪里运行它?如果您在服务器上运行,H: 驱动器是否存在于您的 Windows 机器上并不重要。尝试从测试路径中删除 c: 看看它是否有效
-
在linux下编译运行。但我的工作站实际上是 Windows,我远程登录到 linux 服务器(它可以访问我的 H:/ 驱动器中的文件)。另外,我仔细检查了图像/测试,它确实存在。我尝试删除 c:(实际上是 H:,但你明白了)但没有任何改变。
标签: c++ rename absolute-path