_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
Указатель на буфер, содержащий абсолютный или полный путь, или значение 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
определены, вызовы и _wfullpath
заменяются вызовами _fullpath
_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
определяет диск, текущий каталог этого диска объединяется с путем.
Требования
Function | Обязательный заголовок |
---|---|
_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
См. также
Обработка файлов
_getcwd
, _wgetcwd
_getdcwd
, _wgetdcwd
_makepath
, _wmakepath
_splitpath
, _wsplitpath