Поделиться через


_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 <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. Корректное освобождение этого буфера - обязанность вызывающего объекта (с помощью 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" );
}
  

Эквивалент в .NET Framework

System::IO::File::Create

См. также

Ссылки

Обработка файлов

_getcwd, _wgetcwd

_getdcwd, _wgetdcwd

_makepath, _wmakepath

_splitpath, _wsplitpath