_fullpath返回exes当前路径,而不是驱动器后者

_fullpath returns exes current path insted of drive latter

本文关键字:驱动器 fullpath 返回 exes 当前路径      更新时间:2023-10-16

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

以下是示例代码及其在我的盒子上的输出:

void PrintFullPath(char * partialPath)
{
    char full[_MAX_PATH];
    if (_fullpath(full, partialPath, _MAX_PATH) != NULL)
        printf("Full path is: %sn", full);
    else
        printf("Invalid pathn");
}
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,它也可以正常工作。知道为什么会有这种行为吗?

因为DOS就是这样工作的。

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

在Windows上,每个驱动器都有自己的当前目录。请参阅为什么每个驱动器都有自己的当前目录?

C:是指C:驱动器的当前目录,而不是C:驱动器的根目录,如C:所示。