Share via


_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