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


_makepath, _wmakepath

Создание пути из компонентов. Существуют более безопасные версии этих функций; см. раздел _makepath_s, _wmakepath_s.

void _makepath(
   char *path,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
void _wmakepath(
   wchar_t *path,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);

Параметры

  • path
    Буфер полного пути.

  • drive
    Содержит букву (A, B и т д), соответствующую требуемому диску и дополненную необязательным двоеточием. _makepath вставляет двоеточие в составной путь автоматически, если оно отсутствует. Если drive — NULL или указывает на пустую строку, то буква диска не отображается в составной строке path.

  • dir
    Содержит путь каталогов, не включая обозначение диска или фактическое имя файла. Конечная косая черта является необязательной; в одном аргументе dir может использоваться косая черта (/), обратная косая черта (\) или обе. Если конечная косая черта (/ или \) не указана, она вставляется автоматически. Если dir — NULL или указывает на пустую строку, то путь каталога не вставляется в составную строку path.

  • fname
    Содержит базовое имя файла без расширений. Если fname — NULL или указывает на пустую строку, то имя файла не вставляется в составную строку path.

  • ext
    Содержит фактическое расширение имени файла с предшествующей точкой или без (.). _makepath вставляет точку автоматически, если она отсутствует в ext. Если ext — NULL или указывает на пустую строку, то расширение не вставляется в составную строку path.

Заметки

Функция _makepath создает строку составного пути из отдельных компонентов, сохраняя результат в path. path может включать букву диска, путь к каталогу, имя файла и расширение имени файла. _wmakepath — это двухбайтовая версия _makepath; аргументы для _wmakepath представляют собой двухбайтовые строки. В остальных случаях поведение _wmakepath и _makepath идентично.

Примечание о безопасности   Следует использовать строку, оканчивающуюся символом null. Чтобы избежать переполнения буфера, строка, завершаемая нулевым символом, не должна превышать размер буфера path. _makepath не гарантирует, что длина составной строки пути не превышает _MAX_PATH. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Универсальное текстовое сопоставление функций

Подпрограмма Tchar.h

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tmakepath

_makepath

_makepath

_wmakepath

Аргумент path должен указывать на пустой буфер достаточного для хранения полного пути размера. Размер составного path не может превышать константу _MAX_PATH, определенную в Stdlib.h.

Если путь имеет значение NULL, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. Кроме того, errno устанавливается в EINVAL. Значения NULL разрешены для всех остальных параметров.

Требования

Подпрограмма

Обязательный заголовок

_makepath

<stdlib.h>

_wmakepath

<stdlib.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char path_buffer[_MAX_PATH];
   char drive[_MAX_DRIVE];
   char dir[_MAX_DIR];
   char fname[_MAX_FNAME];
   char ext[_MAX_EXT];

   _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
   // Note: _makepath is deprecated; consider using _makepath_s instead
   printf( "Path created with _makepath: %s\n\n", path_buffer );
   _splitpath( path_buffer, drive, dir, fname, ext ); // C4996
   // Note: _splitpath is deprecated; consider using _splitpath_s instead
   printf( "Path extracted with _splitpath:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}
  

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

System::IO::File::Create

См. также

Ссылки

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

_fullpath, _wfullpath

_splitpath, _wsplitpath

_makepath_s, _wmakepath_s