_fullpath返回exes当前路径,而不是驱动器后者
_fullpath returns exes current path insted of drive latter
在一个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:
所示。
相关文章:
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 在QTreeView中仅显示共享驱动器和文件夹
- QT MYSQL 驱动器构建,未定义对"mysql_get_client_version@0"的引用
- 通过搜索硬盘驱动器查找文件目录
- 如何确定SSD驱动器是固定驱动器还是连接在USB上
- 关于从驱动器中删除文件的问题
- 如何使用libusb获取驱动器名称?
- 如何确定文件或文件夹是在SSD还是硬盘驱动器上?
- Qt驱动器下拉列表仅列出USB记忆棒
- C++ gtkmm:文件选择器对话框不适用于任何驱动器
- 使用 MFC c++ 删除已装载驱动器的文件
- 阻止访问映射的网络驱动器
- 驱动器号上的查找文件失败,但在路径上传递
- 将硬盘驱动器上的 BIT XXX 从 0 更改为 1
- 更改 ICDBurn 窗口 API 中的默认刻录驱动器
- C 操作员超载调用驱动器
- 在字符串驱动器中读取访问违规
- 为什么std ::异常驱动器不否
- 为什么在将值分配给对象时,为什么要调用构造函数和驱动器
- 删除其他类的类驱动器