_makepath, _wmakepath
Crie um nome de caminho a partir de componentes.Versões mais seguras dessas funções estão disponíveis; 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
);
Parâmetros
path
Buffer de caminho completo.drive
Contém uma letra (A, B e assim por diante) correspondente a unidade desejada e uma vírgula à direita opcional._makepathinsere automaticamente os dois-pontos no caminho composto se ele estiver ausente.Se drive é NULL ou aponta para uma seqüência vazia, nenhuma letra de unidade aparece composição path seqüência de caracteres.dir
Contém o caminho de diretórios, não incluindo o designador de unidade ou o nome de arquivo real.A barra à direita é opcional e uma barra (/) ou uma invertida () ou ambos podem ser usados em um único dir argumento.Se nenhuma barra à direita (/ ou \) for especificado, ele é inserido automaticamente.Se dir é NULL ou aponta para uma seqüência vazia, nenhum caminho de diretório está inserido na composição path seqüência de caracteres.fname
Contém o nome do arquivo de base sem qualquer extensão de nome de arquivo.Se fname é NULL ou aponta para uma seqüência vazia, nenhum nome de arquivo é inserido na composição path seqüência de caracteres.ext
Contém a extensão de nome de arquivo real, com ou sem um ponto à esquerda (.)._makepathInsere o período automaticamente se ele não aparecer na ext.Se ext é NULL ou aponta para uma seqüência vazia, sem extensão é inserido na composição path seqüência de caracteres.
Comentários
O _makepath função cria uma seqüência de caracteres do caminho composto dos componentes individuais, armazenando o resultado em path.O path pode incluir uma letra de 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 seqüências de caracteres largos._wmakepathe _makepath tenham comportamento idêntico caso contrário.
Observação de segurança usar uma seqüência terminada por caractere nulo.Para evitar a saturação de buffer, a seqüência de caracteres terminada por caractere nulo não deve exceder o tamanho da path buffer._makepathCertifique-se que o comprimento da seqüência de caracteres do caminho composto não exceda _MAX_PATH.Para obter mais informações, consulte Evitando saturações de Buffer.
Mapeamentos de rotina de texto genérico
Rotina de TCHAR.h |
_ Unicode e _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
O path argumento deve apontar para um buffer vazio grande o suficiente para conter o caminho completo.O composto path deve ser maior do que o _MAX_PATH constante, definido em Stdlib.h.
Se o caminho é NULL, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Além disso, errno for definido como EINVAL.NULLsão permitidos valores para todos os outros parâmetros.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> ou <wchar.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
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 );
}