%>
创建指定相对路径名称的绝对或完整路径名称。
语法
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
另请参阅
文件处理
%>
%>
%>
%>