Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Создают путь из компонентов. Доступны более безопасные версии этих функций; 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