创建指定相对路径名称的绝对或完整路径名称。
语法
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
参数
absPath
指向包含绝对路径名称或完整路径名称的缓冲区的指针或 NULL。
relPath
相对路径名称。
maxLength
绝对路径名称缓冲区 (absPath) 的最大长度。 对于 _fullpath,此长度以字节为单位,但是对于 wchar_t,此长度以宽字符 (_wfullpath) 为单位。
返回值
其中每个函数都会返回指向包含绝对路径名称 (absPath) 的缓冲区的指针。 如果存在错误(例如,如果在 relPath 中传递的值包含一个无效或无法找到的驱动器号,或者创建的绝对路径名称 [absPath] 的长度大于 maxLength),该函数将返回 NULL。
备注
_fullpath 函数将 relPath 中的相对路径名称扩展到其完全限定或绝对路径,并在 absPath 中存储此名称。 如果 absPath 为 NULL,则使用 malloc 分配足够长的缓冲区以容纳路径名称。 调用方负责释放此缓冲区。 相对路径名称指定从当前位置到另一个位置的路径(如当前工作目录:.)。 绝对路径名称是相对路径名称的扩展,表示需要采用完整路径才能从文件系统的根达到所需的位置。 与 _makepath 不同,_fullpath 可用于获取相对路径 (relPath) 的绝对路径名称,其中相对路径的名称中包括 ./ 或 ../。
例如,若要使用 C 运行时例程,该应用程序必须包括包含例程声明的头文件。 每个头文件 #include 指令以相对方式(从应用程序的工作目录)引用文件位置:
#include <stdlib.h>
当文件的绝对路径(实际的文件系统位置)可能是:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
_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 and _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
|---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
如果 absPath 缓冲区为 NULL,_fullpath 会调用 malloc 来分配缓冲区,并忽略 maxLength 参数。 调用方负责根据需要解除分配此缓冲区(使用 free)。 如果 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" );
}
Full path is: C:\Documents and Settings\user\My Documents\test
Full path is: C:\test
Full path is: C:\Documents and Settings\user\test
另请参阅
文件处理
%>
%>
%>
%>