C ++重命名函数不能使用绝对路径

时间:2013-11-04 22:58:13

标签: c++ rename absolute-path

我的程序的一部分需要从用户获取文件路径,然后移动并重命名该文件。

如果我使用这样的相对路径:

#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上工作。

1 个答案:

答案 0 :(得分:0)

如果它在linux服务器上运行,则需要使用linux服务器上的路径。您可以使用pwd打印工作目录(它将为您提供当前所在的绝对路径)。您还可以使用..的相对路径来上一个目录。例如,您的目录结构可能是这样的

code/
    main.cpp
    main.h
    a.out

images/
    yourimage.png

所以你可以这样做:

$ pwd
/home/user/code

然后你的图像绝对路径是

/home/user/images/yourimage.png

或者您可以使用代码目录中的相对路径

../images/yourimage.png