_splitpath
, _wsplitpath
Divida um caminho em componentes. Para obter versões mais seguras dessas funções, consulte _splitpath_s
, _wsplitpath_s
.
Sintaxe
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Parâmetros
path
Caminho completo.
drive
Letra da unidade, seguida por dois pontos (:). Você pode passar NULL
por esse parâmetro se não precisar da letra da unidade.
dir
Caminho do diretório, incluindo barra à direita. Barras duplas (/
), barras invertidas (\
) ou ambas podem ser usadas. Passe NULL
para este parâmetro se você não precisar do caminho do diretório.
fname
Nome de arquivo base (sem extensão). Passe NULL
para este parâmetro se você não precisar do nome do arquivo.
ext
Extensão de nome de arquivo, incluindo ponto à esquerda (.
). Passe NULL
para este parâmetro se você não precisar da extensão do nome do arquivo.
Comentários
A função _splitpath
divide um caminho em seus quatro componentes. _splitpath
manipula automaticamente argumentos de cadeia de caracteres multibyte conforme apropriado, reconhecendo sequências de caracteres multibyte de acordo com a página de código multibyte que está sendo usada no momento. _wsplitpath
é uma versão de caractere largo de _splitpath
; os argumentos para _wsplitpath
são cadeias de caracteres largas. Caso contrário, essas funções se comportam de forma idêntica.
Nota de segurança Essas funções estão sujeitas à saturação do buffer. Os problemas de estouro de buffer são um método frequente de ataque ao sistema, resultando em uma elevação de privilégio sem garantia. Para obter mais informações, confira Como evitar sobrecargas de buffer. Versões mais seguras dessas funções estão disponíveis; confira _splitpath_s
, _wsplitpath_s
.
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 |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Cada componente do caminho completo é armazenado em um buffer separado; as constantes de manifesto _MAX_DRIVE
, _MAX_DIR
, _MAX_FNAME
e _MAX_EXT
(definidas em STDLIB.H
) especificam o tamanho máximo para cada componente de arquivo. Componentes de arquivo maiores do que as constantes de manifesto correspondentes causam corrupção de heap.
Cada buffer deve ser tão grande quanto a constante de manifesto correspondente para evitar um possível estouro de buffer.
A tabela a seguir lista os valores das constantes do manifesto.
Nome | Valor |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Se o caminho completo não contiver um componente (por exemplo, um nome de arquivo), _splitpath
atribuirá cadeias de caracteres vazias aos buffers correspondentes.
Você pode passar NULL
para _splitpath
para qualquer parâmetro diferente daquele path
que você não precisa.
Se path
for NULL
, o manipulador de parâmetro inválido será chamado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, errno
será definido como EINVAL
.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de _makepath
.
Confira também
Manipulação de arquivos
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s