_fullpath, _wfullpath
创建绝对或完整路径名指定的相对路径名称。
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
参数
absPath
对包含绝对或完整路径名或空缓冲区的指针。relPath
相对路径名称。maxLength
绝对路径名缓冲区 (absPath) 的最大长度。 此长度。 _fullpath 的字节,但在宽字符 (wchar_t) _wfullpath的。
返回值
这些函数都返回一个指向包含绝对路径名 (absPath) 的缓冲区。 如果存在错误 (例如,因此,如果在 relPath 传递的值包括无效或无法找到的驱动器号,或者,如果创建的绝对路径名 (absPath) 的长度大于 maxLength),则函数返回 NULL。
备注
_fullpath 函数在 absPath扩展 relPath 的相对路径名到其完全限定路径或绝对路径并将此名称*。*如果 absPath 为空, malloc 用于分配足够的长度缓冲区保存路径名。 是调用方负责释放此缓冲区中。 相对路径名指定路径从当前位置的其他位置 (例如当前工作目录:“.")。 绝对路径名是指定所需的整个路径到达从文件系统的根目录指定的位置相对路径名的扩展。 不同 _makepath, _fullpath 可以用于获取绝对路径名包括 “的相对路径 (relPath)。/”或 “。/”的名称。
例如,使用 C 运行时实例,应用程序必须包含实例的声明的头文件。 每个头文件包含语句引用文件的位置的相对方法 (从应用程序的工作目录):
#include <stdlib.h>
当绝对路径 (物理文件系统位置) 文件可能是:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
自动_fullpath处理多字节字符串参数根据需要,识别多字节字符顺序基于当前正在使用多字节代码的页。 _wfullpath是 _fullpath的宽字符版本;为 _wfullpath的字符串参数是宽字符字符串。 _wfullpath和 _fullpath具有相同的行为,但 _wfullpath不处理多字节字符字符串。
如果 _DEBUG和 _CRTDBG_MAP_ALLOC都定义,对 _fullpath ,并 _wfullpath 替换调用 _fullpath_dbg 和 _wfullpath_dbg 允许调试内存分配。 有关更多信息,请参见 _fullpath_dbg, _wfullpath_dbg。
,如果 maxlen 小于或等于 0 中,此函数调用的参数无效处理程序,如 参数验证所述。 如果执行允许继续,此功能设置 errno 到 EINVAL 并返回 NULL。
一般文本例程映射
Tchar.h 实例 |
未定义的 _UNICODE 和 _MBCS |
定义的 _MBCS |
定义的 _UNICODE |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
如果 absPath 缓冲区是 NULL, _fullpath 调用 malloc 分配缓冲区并忽略 maxLength 参数。 是调用方负责释放此缓冲区 (使用 免) 根据需要。 如果 relPath 参数指定磁盘驱动器,此驱动程序当前目录以及路径。
要求
功能 |
必需的头 |
---|---|
_fullpath |
stdlib.h |
_wfullpath |
stdlib.h 或 wchar.h |
有关更多兼容性信息,请参见中介绍的 兼容性 。
示例
// crt_fullpath.c
// This program demonstrates how _fullpath
// creates a full path from a partial path.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
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( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
}