gpt4 book ai didi

c++ - _fullpath 返回 ex 的当前路径而不是驱动器号

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:55 24 4
gpt4 key购买 nike

在 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:");
}

Full path is: c:\tmp\

Full path is: C:\Users\Projects\fullpath\fullpath

Full path is: F:\

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

此外,如果我用“c:\\”调用 PrintFullPath,它也能正常工作。知道为什么会出现这种行为吗?

最佳答案

因为这就是 DOS 的工作方式。

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

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

并且 C: 指的是 C: 驱动器的当前目录 - 而不是代表的 C: 驱动器的根目录通过 C:\

关于c++ - _fullpath 返回 ex 的当前路径而不是驱动器号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34155890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com