_fullpath, _wfullpath
Cria um nome de caminho absoluto ou completo para o nome de caminho relativo especificado.
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 que contém o caminho completo ou absoluto nome ou nulo.relPath
Nome de caminho relativo.maxLength
Comprimento máximo do buffer de nome de caminho absoluto (absPath).Esse comprimento é em bytes para _fullpath , mas em caracteres extensos (wchar_t) para _wfullpath.
Valor de retorno
Cada uma dessas funções retorna um ponteiro para um buffer que contém o nome de caminho absoluto (absPath).Se houver um erro (por exemplo, se o valor passado relPath inclui uma letra de unidade que não é válido ou não for encontrada, ou se o comprimento do nome do caminho absoluto criado (absPath) é maior do que maxLength), a função retornará NULL.
Comentários
O _fullpath função expande o nome de caminho relativo no relPath caminho totalmente qualificado ou absoluto e armazena esse nome na absPath*.* Se absPath for NULL, malloc é usado para alocar um buffer de tamanho suficiente para conter o nome do caminho.É responsabilidade do chamador para liberar esse buffer.Um nome de caminho relativo Especifica um caminho para outro local do local atual (como, por exemplo, 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 acessar o local desejado da raiz do sistema de arquivos.Ao contrário do _makepath, _fullpath pode ser usado para obter o nome de caminho absoluto para caminhos relativos (relPath) que incluem ". /"ou".../ "em seus nomes.
Por exemplo, para usar rotinas de tempo de execução C, o aplicativo deve incluir os arquivos de cabeçalho que contêm as declarações para as rotinas.Cada arquivo de cabeçalho incluem o local do arquivo de referências de instrução de forma relativa (a partir do diretório de trabalho do aplicativo):
#include <stdlib.h>
Quando o caminho absoluto (local do sistema de arquivo real) do arquivo pode ser:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
_fullpath manipula automaticamente os argumentos de seqüência de caracteres multibyte conforme apropriado, reconhecendo as seqüências de caracteres multibyte de acordo com para a página de código multibyte atualmente em uso._wfullpath é uma versão de caractere largo de _fullpath; os argumentos de seqüência de caracteres para _wfullpath são seqüências de caracteres largos._wfullpath e _fullpath se comportam de forma idêntica, exceto que _wfullpath não processa as seqüências de caracteres de multibyte.
Se _DEBUG e _CRTDBG_MAP_ALLOC são definido, chamadas para _fullpath e _wfullpath são substituídos por chamadas para _fullpath_dbg e _wfullpath_dbg para permitir a depuração de alocações de memória.Para obter mais informações, consulte _fullpath_dbg, _wfullpath_dbg.
Esta função chama o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro, se maxlen é menor ou igual a 0.Se a execução terá permissão para continuar, essa função define errno para EINVAL e retorna NULL.
Mapeamentos de rotina de texto genérico
Rotina de TCHAR.h |
_ Unicode e _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Se a absPath o buffer é NULL, _fullpath chamadas malloc para alocar um buffer e ignora o maxLength argumento.É responsabilidade do chamador para desalocar nesse buffer (usando livre) conforme apropriado.Se a relPath argumento especifica uma unidade de disco, o diretório atual desta unidade é combinado com o caminho.
Requisitos
Função |
Cabeçalho necessário |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> ou <wchar.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
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" );
}