Compartir a través de


_fullpath, _wfullpath

Crea un nombre de ruta de acceso absoluta o completa para el nombre de ruta de acceso relativa especificado.

Sintaxis

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
Puntero al búfer que contiene el nombre de ruta de acceso absoluta o completa, o bien NULL.

relPath
Nombre de ruta de acceso relativa.

maxLength
Longitud máxima del búfer de nombre de ruta de acceso absoluta (absPath). Esta longitud se muestra en bytes para _fullpath y en caracteres anchos (wchar_t) para _wfullpath.

Valor devuelto

Cada una de estas funciones devuelve un puntero a un búfer que contiene el nombre de ruta de acceso absoluta (absPath). Si se produce un error (por ejemplo, si el valor pasado incluye relPath una letra de unidad que no es válida o no se encuentra, o si la longitud del nombre de ruta de acceso absoluta creado (absPath) es mayor que maxLength), la función devuelve NULL.

Comentarios

La _fullpath función expande el nombre de ruta de acceso relativa en relPath a su ruta de acceso completa o absoluta y almacena este nombre en absPath. Si absPath es NULL, se usa malloc para asignar un búfer de longitud suficiente para contener el nombre de ruta de acceso. Es responsabilidad del autor de llamada liberar este búfer. Un nombre de ruta de acceso relativa especifica una ruta de acceso a otra ubicación desde la ubicación actual (como el directorio de trabajo actual: .). Un nombre de ruta de acceso absoluta es la expansión de un nombre de ruta de acceso relativa que indica toda la ruta de acceso necesaria para llegar a la ubicación que se quiere desde la raíz del sistema de archivos. A diferencia de _makepath, _fullpath se puede usar para obtener el nombre de ruta de acceso absoluta para rutas de acceso relativas (relPath) que incluyen ./ o ../ en sus nombres.

Por ejemplo, para usar rutinas en tiempo de ejecución de C, la aplicación debe incluir los archivos de encabezado que contienen las declaraciones de las rutinas. Cada directiva #include de archivo de encabezado hace referencia a la ubicación del archivo de forma relativa (desde el directorio de trabajo de la aplicación):

#include <stdlib.h>

cuando la ruta de acceso absoluta (ubicación real del sistema de archivos) del archivo podría ser:

\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

_fullpath controla automáticamente argumentos de cadenas de caracteres multibyte según corresponda, reconociendo secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso. _wfullpath es una versión con caracteres anchos de _fullpath; los argumentos de cadena para _wfullpath son cadenas de caracteres anchos. _wfullpath y _fullpath se comportan de manera idéntica, salvo que _wfullpath no controla las cadenas de caracteres multibyte.

Si _DEBUG y _CRTDBG_MAP_ALLOC se definen, las llamadas a _fullpath y _wfullpath se reemplazan por llamadas a _fullpath_dbg y _wfullpath_dbg, para permitirle depurar asignaciones de memoria. Para más información, vea _fullpath_dbg, _wfullpath_dbg.

Esta función invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros, si maxlen es menor o igual que 0. Si la ejecución puede continuar, la función establece errno en EINVAL y devuelve NULL.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE and _MBCS no definido _MBCS definido _UNICODE definido
_tfullpath _fullpath _fullpath _wfullpath

Si el búfer absPath es NULL, _fullpath llama a malloc para asignar un búfer y omite el argumento maxLength. Es responsabilidad del autor de la llamada desasignar este búfer (mediante free) según corresponda. Si el argumento relPath especifica una unidad de disco, el directorio actual de esta unidad se combina con la ruta de acceso.

Requisitos

Función Encabezado necesario
_fullpath <stdlib.h>
_wfullpath <stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// 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

Consulte también

Control de archivos
_getcwd, _wgetcwd
_getdcwd, _wgetdcwd
_makepath, _wmakepath
_splitpath, _wsplitpath