Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Создают путь из компонентов. Доступны более безопасные версии этих функций; see _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 идентично в противном случае.
Примечание о безопасности. Следует использовать строку, оканчивающуюся нуль-символом. Длина строки, завершающейся нуль-символом, не должна превышать размер буфера path. _makepath не гарантирует, что длина строки составного пути не превышает _MAX_PATH. Дополнительные сведения см. в разделе "Избегание переполнения буфера".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
| Подпрограмма 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 );
}
Path created with _makepath: c:\sample\crt\makepath.c
Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
См. также
Обработка файлов
_fullpath, _wfullpath
_splitpath, _wsplitpath
_makepath_s, _wmakepath_s