_makepath
, _wmakepath
Crie um nome de caminho com base em componentes. Versões mais seguras dessas funções estão disponíveis; confira _makepath_s
, _wmakepath_s
.
Sintaxe
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
);
Parâmetros
path
Buffer de caminho completo.
drive
Contém uma letra (A, B e assim por diante) correspondente à unidade desejada e um sinal de dois pontos opcional à direita. _makepath
insere os dois-pontos automaticamente no caminho composto se estiver ausente. Se drive
for NULL
ou apontar para uma cadeia de caracteres vazia, nenhuma letra da unidade aparecerá na cadeia de caracteres de composição path
.
dir
Contém o caminho de diretórios, excluindo o designador da unidade ou o nome de arquivo real. A barra à direita é opcional, e uma barra (/
) ou uma barra invertida (\
) ou ambas podem ser usadas em um único dir
argumento. Se nenhuma barra final (/
ou \
) for especificada, ela será inserida automaticamente. Se dir
for NULL
ou apontar para uma cadeia de caracteres vazia, nenhum caminho de diretório será inserido na cadeia de caracteres de composição path
.
fname
Contém o nome de arquivo base sem qualquer extensão de nome de arquivo. Se fname
for NULL
ou apontar para uma cadeia de caracteres vazia, nenhum nome de arquivo será inserido na cadeia de caracteres de composição path
.
ext
Contém a extensão de nome de arquivo real, com ou sem um ponto inicial (.
). _makepath
insere o ponto automaticamente se ele não aparecer em ext
. Se ext
for NULL
ou apontar para uma cadeia de caracteres vazia, nenhuma extensão será inserida na cadeia de caracteres de composição path
.
Comentários
A função _makepath
cria uma cadeia de caracteres de caminho de composição com base em componentes individuais e armazena o resultado em path
. O path
pode incluir uma letra da unidade, caminho de diretório, nome de arquivo e extensão de nome de arquivo. _wmakepath
é uma versão de caractere largo de _makepath
; os argumentos para _wmakepath
são cadeias de caracteres largas. Caso contrário, _wmakepath
e _makepath
se comportam de forma idêntica.
Observação de Segurança Use uma cadeia de caracteres terminada em nulo. Para evitar o estouro de buffer, a cadeia de caracteres terminada em nulo não deve exceder o tamanho do buffer path
. _makepath
não garante que o comprimento da cadeia de caracteres do caminho composto não exceda _MAX_PATH
. Para obter mais informações, confira Como evitar sobrecargas de buffer.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina Tchar.h | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
O argumento path
deve apontar para um buffer vazio grande o suficiente para conter o caminho completo. A composição path
não deve ser maior do que a constante _MAX_PATH
, definida em Stdlib.h.
Se path for NULL
, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Além disso, errno
é definido como EINVAL
. Valores NULL
são permitidos para todos os outros parâmetros.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Manipulação de arquivos
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s