在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,它工作正常.知道为什么会这样做吗?
因为那是DOS的工作方式.
打开一个命令窗口.F:
例如,输入.您当前的驱动器可能会更改为F:\
.切换到F:
驱动器上的另一个目录.现在,C:
通过输入更改为C:
,并更改为C:
驱动器上的目录.重新输入F:
,你会发现你仍然在F:
你以前的驱动器上的同一目录中.
在Windows上,每个驱动器都有自己的当前目录.请参阅为什么每个驱动器都有自己的当前目录?
并C:
指当前目录C:
驱动器-而不是根目录C:
驱动器做为所为代表C:\
.