Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Divida um caminho em componentes. Para 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 de 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. Podem ser utilizadas barras para a frente (/), barras invertidas (\), ou ambas. Passe NULL para este parâmetro se você não precisar do caminho do diretório.
fname
Nome do ficheiro base (sem extensão). Passe NULL para este parâmetro se você não precisar do nome do arquivo.
ext
Extensão do nome do arquivo, incluindo o ponto inicial (.). Passe NULL para este parâmetro se você não precisar da extensão de nome de arquivo.
Observações
A _splitpath função divide um caminho em seus quatro componentes.
_splitpath Manipula automaticamente argumentos de cadeia de caracteres de vários bytes conforme apropriado, reconhecendo sequências de caracteres de vários bytes de acordo com a página de código de vários bytes atualmente em uso.
_wsplitpathé uma versão de caracteres largos de ; os argumentos para _splitpath são cadeias de _wsplitpathcaracteres largos. Estas funções comportam-se de forma idêntica.
Nota sobre segurança Essas funções estão sujeitas a saturação de buffer. Problemas de saturação de buffer são um método frequente de ataque ao sistema, resultando em uma elevação injustificada de privilégio. Para obter mais informações, consulte Evitando saturações de buffer. Estão disponíveis versões mais seguras destas funções; ver _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
TCHAR.H rotina |
_UNICODE e _MBCS não definido |
_MBCS definido |
_UNICODE definido |
|---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Cada componente do caminho completo é armazenado em um buffer separado; As constantes de _MAX_DRIVEmanifesto , _MAX_DIR, _MAX_FNAMEe _MAX_EXT (definidas em STDLIB.H) especificam o tamanho máximo para cada componente de arquivo. Componentes de arquivo que são maiores do que as constantes de manifesto correspondentes causam corrupção de pilha.
Cada buffer deve ser tão grande quanto sua constante de manifesto correspondente para evitar uma possível saturação do buffer.
A tabela a seguir lista os valores das constantes de 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 daquele path que você não precisa.
Se path for NULL, o manipulador de parâmetros inválido será invocado, conforme descrito em de validação de parâmetros. Se a execução for permitida para continuar, errno é definido como EINVAL.
Requerimentos
| Rotina | Cabeçalho obrigatório |
|---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> ou <wchar.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Veja o exemplo para _makepath.
Ver também
Tratamento de ficheiros
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
_splitpath_s, _wsplitpath_s