_makepath_s, _wmakepath_s

Создает имя пути из компонентов.Эти версии _makepath, _wmakepath со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

errno_t _makepath_s(
   char *path,
   size_t sizeInBytes,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
errno_t _wmakepath_s(
   wchar_t *path,
   size_t sizeInWords,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);
template <size_t size>
errno_t _makepath_s(
   char (&path)[size],
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
   wchar_t (&path)[size],
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
); // C++ only

Параметры

  • [исходящий] path
    Буфер полного пути.

  • [входящий] sizeInWords
    Размер буфера в машинных словам.

  • [входящий] sizeInBytes
    Размер буфера в байтах.

  • [входящий] drive
    Содержит букву (a, B, и т д), соответствующий требуемому диску и необязательному замыкающий двоеточию._makepath_s вставляет двоеточие автоматически в составной путь, если он отсутствует.If drive существует NULL или указывает на пустую строку, буква диска отображаются в составной path строка.

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

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

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

Возвращаемое значение

Нуль, если выполнение прошло успешно; код ошибки при сбое.

Условия возникновения ошибок

path

sizeInWords / sizeInBytes

Return

Содержимое path

NULL

any

EINVAL

не было

any

<= 0

EINVAL

не было

Если либо выше условиях возникновения ошибки, вызывающие эти функции недопустимы обработчик параметра, как описано в разделе Проверка параметров.Если выполнение может продолжить, errno равноEINVAL и функции возвращаютEINVAL**.** NULL позволяет параметров drive" fnameи ext.Дополнительные сведения о расширениях функциональности, когда эти параметры указатели null или пустых строк см. в разделе " примечания ".

Заметки

_makepath_s функция создает составная строка пути, из отдельных компонентов, результат in path.path может включать букву диска, путь к каталогу, имя файла и расширение имени файла._wmakepath_s версия расширенных символов _makepath_s; аргументы _wmakepath_s характерные черты._wmakepath_s и _makepath_s поступайте совпадают, в противном случае.

Сопоставления подпрограммы Родов-Текста

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

Не указанные _UNICODE и _MBCS

Указанный символ _MBCS

Указанный _UNICODE

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

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

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

В C++ с помощью этих функций упрощает перегрузками шаблона; перегруженные методы могут определять длина буфера, автоматически (что устраняет необходимость указать аргумент size) и они могут автоматически заменять старые, non-безопасные функции с их новыми, безопасный копиями.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.

Отладочной версии этих функций сначала заполняют буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.

Требования

Процедура

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

_makepath_s

<stdlib.h>

_wmakepath_s

<stdlib.h> OR <wchar.h>

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

Пример

// crt_makepath_s.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];
   errno_t err;

   err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
                      "crt_makepath_s", "c" );
   if (err != 0)
   {
      printf("Error creating path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path created with _makepath_s: %s\n\n", path_buffer );
   err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
                       _MAX_FNAME, ext, _MAX_EXT );
   if (err != 0)
   {
      printf("Error splitting the path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path extracted with _splitpath_s:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}

Output

Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c

Path extracted with _splitpath_s:
  Drive: c:
  Dir: \sample\crt\
  Filename: crt_makepath_s
  Ext: .c

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

System:: Ввода-вывода:: файл:: Создать

См. также

Ссылки

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

_fullpath, _wfullpath

_splitpath_s, _wsplitpath_s

_makepath, _wmakepath