Share via


_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 ele 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 à direita (/ 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 à esquerda (.). _makepath Insere o ponto automaticamente se ele não aparecer no 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, consulte Evitando saturações de buffer.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na 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âmetros inválido será chamado, 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