Partilhar via


_splitpath_s, _wsplitpath_s

Divida um nome de caminho em componentes.Essas são sistema autônomo versões de _splitpath, _wsplitpath com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.

errno_t _splitpath_s(
   const char * path,
   char * drive,
   size_t driveNumberOfElements,
   char * dir,
   size_t dirNumberOfElements,
   char * fname,
   size_t nameNumberOfElements,
   char * ext, 
   size_t extNumberOfElements
);
errno_t _wsplitpath_s(
   const wchar_t * path,
   wchar_t * drive,
   size_t driveNumberOfElements,
   wchar_t *dir,
   size_t dirNumberOfElements,
   wchar_t * fname,
   size_t nameNumberOfElements,
   wchar_t * ext,
   size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
   const char *path,
   char (&drive)[drivesize],
   char (&dir)[dirsize],
   char (&fname)[fnamesize],
   char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
   const wchar_t *path,
   wchar_t (&drive)[drivesize],
   wchar_t (&dir)[dirsize],
   wchar_t (&fname)[fnamesize],
   wchar_t (&ext)[extsize]
); // C++ only

Parâmetros

  • [in]path
    Caminho completo.

  • [out] drive
    Letra da unidade opcional, seguida por dois-pontos (:).

  • [in]driveNumberOfElements
    O dimensionar do drive buffer em caracteres de byte único ou de longa distância. If drive é NULL, esse valor deve ser conjunto para zero.

  • [out] dir
    Caminho de diretório opcional, incluindo barra / à direita.Barras (/ ), barras invertidas () \ ), ou ambos podem ser usados.

  • [in]dirNumberOfElements
    O dimensionar do dir buffer em caracteres de byte único ou de longa distância. If dir é NULL, esse valor deve ser conjunto para zero.

  • [out] fname
    Nome_do_arquivo base opcional (sem extensão).

  • [in]nameNumberOfElements
    O dimensionar do fname buffer em caracteres de byte único ou de longa distância. If fname é NULL, esse valor deve ser zero.

  • [out] ext
    Extensão de nome de arquivo opcionais, incluindo entrelinhamento período (. ).

  • [in]extNumberOfElements
    O dimensionar de ext buffer em caracteres de byte único ou de longa distância. If ext é NULL, esse valor deve ser conjunto para zero.

Valor de retorno

Zero se for bem-sucedida; um código de erro em caso de falha.

Condições de erro

Condição

Valor de retorno

path é NULL

EINVAL

drive é NULL, driveNumberOfElements é diferente de zero

EINVAL

drive é não-NULL, driveNumberOfElements for zero

EINVAL

dir é NULL, dirNumberOfElements é diferente de zero

EINVAL

dir é não-NULL, dirNumberOfElements for zero

EINVAL

fname é NULL, nameNumberOfElements é diferente de zero

EINVAL

fname é não-NULL, nameNumberOfElements for zero

EINVAL

ext é NULL, extNumberOfElements é diferente de zero

EINVAL

ext é não-NULL, extNumberOfElements for zero

EINVAL

Se ocorrer qualquer uma das condições acima, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro . Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar EINVAL.

Se algum dos buffers for muito pequeno Isenção o resultado, essas funções desmarcar todos os buffers para seqüências de caracteres vazia, defina errno para ERANGEe retornar ERANGE.

Comentários

The _splitpath_s função divide um caminho em seus quatro componentes. _splitpath_s trata automaticamente sistema autônomo argumentos de seqüência de caractere multibyte conforme apropriado, reconhecendo seqüências de caractere de multibyte de acordo com para a página de código multibyte atualmente em uso. _wsplitpath_s é uma versão de caractere largo da _splitpath_s; os argumentos para _wsplitpath_s são seqüências de caracteres largos. Essas funções se comportam exatamente caso contrário

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tsplitpath

_splitpath

_splitpath

_wsplitpath

Cada argumento é armazenado em um buffer; o manifesto constantes _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, e _MAX_EXT (definido em STDLIB.H) Especifica o dimensionar máximo necessário para cada buffer. Os outros argumentos apontam para buffers usados para armazenar os elementos de caminho.Após uma telefonar para _splitpath_s é executado, esses argumentos conter seqüências vazias para componentes não encontrado no path. Você pode passar um NULL ponteiro para _splitpath_s para qualquer componente que você não precisa.

No C++, usando essas funções é simplificado pela sobrecargas de modelo; sobrecargas de podem inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de dimensionar.For more information, see Proteger overloads de modelo.

As versões de depurar dessas funções primeiro preenchem o buffer com 0xFD.Para desabilitar esse comportamento, use _CrtSetDebugFillThreshold.

Requisitos

Rotina

Cabeçalho necessário

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

Consulte o exemplo para _makepath_s, _wmakepath_s.

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Manipulação de arquivos

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp