_fullpath返回驱动后者的当前路径

时间:2015-12-08 12:26:07

标签: c++ c windows

在windows程序中我使用_fulpath函数来获取文件/目录的绝对路径。

以下是我的方框中的示例代码及其输出:

void PrintFullPath(char * partialPath)
{
    char full[_MAX_PATH];
    if (_fullpath(full, partialPath, _MAX_PATH) != NULL)
        printf("Full path is: %s\n", full);
    else
        printf("Invalid path\n");
}

int main(void)
{
    PrintFullPath("c:\\tmp\\");
    PrintFullPath("c:");
    PrintFullPath("f:");
}
  

完整路径是:c:\ tmp \

     

完整路径为:C:\ Users \ Projects \ fullpath \ fullpath

     

完整路径是:F:\

在第二个PrintFullPath中,如果我从C盘中的某个路径运行我的exe,PrintFullPath会给我程序的CWD而不是c:。 第一和第三PrintFullPath工作正常。

如果我用" c:\\"来调用PrintFullPath。它工作正常。 知道为什么会出现这种行为吗?

1 个答案:

答案 0 :(得分:7)

因为那是DOS的工作方式。

打开命令窗口。例如,输入F:。您当前的驱动器可能会更改为F:\。切换到F:驱动器上的另一个目录。现在,输入C:更改为C:,然后切换到C:驱动器上的目录。重新输入F:,您就会发现自己仍然位于之前F:驱动器上的同一目录中。

在Windows上,每个驱动器都有自己的当前目录。见Why does each drive have its own current directory?

并且C:指的是C:驱动器的当前目录 - 而不是C:驱动器的根目录,而C:\代表的驱动器的根目录。< / p>