_fullpath
, _wfullpath
Cria um nome de caminho absoluto ou completo para o nome de caminho relativo especificado.
Sintaxe
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
Parâmetros
absPath
Ponteiro para um buffer contendo o nome de caminho absoluto ou completo, ou NULL
.
relPath
Nome de caminho relativo.
maxLength
Comprimento máximo do buffer do nome de caminho absoluto (absPath
). Esse comprimento é em bytes para _fullpath
mas em caracteres largos (wchar_t
) para _wfullpath
.
Valor retornado
Cada uma dessas funções retorna um ponteiro para um buffer contendo o nome de caminho absoluto (absPath
). Se houver um erro (por exemplo, se o valor passado relPath
incluir uma letra de unidade que não é válida ou não pode ser encontrada, ou se o comprimento do nome do caminho absoluto criado (absPath
) for maior que maxLength
), a função retornará NULL
.
Comentários
A _fullpath
função expande o nome do caminho relativo para relPath
seu caminho totalmente qualificado ou absoluto e armazena esse nome em absPath
. Se absPath
for NULL
, malloc
será usado para alocar um buffer de tamanho suficiente para armazenar o nome do caminho. É responsabilidade do chamador liberar esse buffer. Um nome de caminho relativo especifica um caminho para outro local a partir do local atual (como o diretório de trabalho atual: .
). Um nome de caminho absoluto é a expansão de um nome de caminho relativo que indica o caminho inteiro necessário para alcançar o local desejado da raiz do sistema de arquivos. Ao contrário de _makepath
, _fullpath
pode ser usado para obter o nome do caminho absoluto para caminhos relativos (relPath
) que incluem ./
ou ../
em seus nomes.
Por exemplo, para usar rotinas de tempo de execução de C, o aplicativo deve incluir os arquivos de cabeçalho que contêm as declarações para as rotinas. Cada diretiva de arquivo de cabeçalho #include
faz referência à localização do arquivo de maneira relativa (a partir do diretório de trabalho do aplicativo):
#include <stdlib.h>
quando o caminho absoluto (local do sistema de arquivos real) do arquivo pode ser:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
_fullpath
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. _wfullpath
é uma versão de caractere largo de _fullpath
; os argumentos de cadeia de caracteres _wfullpath
são cadeias de caracteres largos. _wfullpath
e _fullpath
têm comportamento idêntico, exceto pelo fato de que _wfullpath
não manipula cadeias de caracteres multibyte.
Se _DEBUG
e _CRTDBG_MAP_ALLOC
estiverem definidos, as chamadas para _fullpath
e _wfullpath
serão substituídas por chamadas para _fullpath_dbg
e _wfullpath_dbg
, para permitir que você depure alocações de memória. Para obter mais informações, consulte _fullpath_dbg
e _wfullpath_dbg
.
Essa função invoca o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro, se maxlen
for menor ou igual a 0. Se a execução puder continuar, essa função definirá errno
para EINVAL
e retornará NULL
.
Mapeamentos de rotina de texto genérico
Rotina Tchar.h |
_UNICODE and _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Se o buffer absPath
for NULL
, _fullpath
chamará malloc
para alocar um buffer e ignorará o argumento maxLength
. É responsabilidade do chamador desalocar esse buffer (usando free
) conforme apropriado. Se o argumento relPath
especificar uma unidade de disco, o diretório atual da unidade será combinado ao caminho.
Requisitos
Função | Cabeçalho necessário |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_fullpath.c
// This program demonstrates how _fullpath
// creates a full path from a partial path.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
void PrintFullPath( char * partialPath )
{
char full[_MAX_PATH];
if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
printf( "Full path is: %s\n", full );
else
printf( "Invalid path\n" );
}
int main( void )
{
PrintFullPath( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
}
Full path is: C:\Documents and Settings\user\My Documents\test
Full path is: C:\test
Full path is: C:\Documents and Settings\user\test
Confira também
Manipulação de arquivos
_getcwd
, _wgetcwd
_getdcwd
, _wgetdcwd
_makepath
, _wmakepath
_splitpath
, _wsplitpath