_splitpath
, _wsplitpath
Dividir 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
para 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 esse parâmetro se você não precisar do caminho do diretório.
fname
Nome de arquivo base (sem extensão). Passe NULL
para esse parâmetro se você não precisar do nome do arquivo.
ext
Extensão de nome de arquivo, incluindo ponto à esquerda (.
). Passe NULL
para esse 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.
Observação de segurança Essas funções estão sujeitas a saturação de 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, consulte Evitando saturações 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, 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 |
---|---|---|---|
_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
qualquer parâmetro diferente do path
que você não precisa.
Se path
for NULL
, o manipulador de parâmetros inválido será invocado, 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de