_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 определяет диск, текущий каталог этого диска объединяется с путем.

Требования

Функция Обязательный заголовок
_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