_fullpath, _wfullpath

Tworzy bezwzględną lub pełną nazwę ścieżki dla określonej nazwy ścieżki względnej.

Składnia

char *_fullpath(
   char *absPath,
   const char *relPath,
   size_t maxLength
);
wchar_t *_wfullpath(
   wchar_t *absPath,
   const wchar_t *relPath,
   size_t maxLength
);

Parametry

absPath
Wskaźnik do buforu zawierającego bezwzględną lub pełną nazwę ścieżki lub NULL.

relPath
Nazwa ścieżki względnej.

maxLength
Maksymalna długość buforu nazwy ścieżki bezwzględnej (absPath). Ta długość jest wyrażona w bajtach, _fullpath ale w znakach szerokich (wchar_t) dla _wfullpath.

Wartość zwracana

Każda z tych funkcji zwraca wskaźnik do buforu zawierającego bezwzględną nazwę ścieżki (absPath). Jeśli wystąpi błąd (na przykład jeśli przekazana wartość relPath zawiera literę dysku, która nie jest prawidłowa lub nie można jej odnaleźć, lub jeśli długość utworzonej bezwzględnej nazwy ścieżki (absPath) jest większa niż maxLength), funkcja zwraca NULLwartość .

Uwagi

Funkcja _fullpath rozszerza nazwę ścieżki względnej do relPath w pełni kwalifikowanej lub bezwzględnej ścieżki i przechowuje tę nazwę w pliku absPath. Jeśli absPath parametr ma NULLwartość , malloc służy do przydzielenia buforu o wystarczającej długości do przechowywania nazwy ścieżki. Jest to odpowiedzialność obiektu wywołującego za zwolnienie tego buforu. Nazwa ścieżki względnej określa ścieżkę do innej lokalizacji z bieżącej lokalizacji (na przykład bieżący katalog roboczy: .). Nazwa ścieżki bezwzględnej to rozszerzenie nazwy ścieżki względnej, która określa całą ścieżkę wymaganą do uzyskania żądanej lokalizacji z katalogu głównego systemu plików. W przeciwieństwie do _makepath, _fullpath można użyć do uzyskania bezwzględnej nazwy ścieżki dla ścieżek względnych (relPath), które zawierają ./ lub ../ w nazwach.

Aby na przykład używać procedur czasu wykonywania języka C, aplikacja musi zawierać pliki nagłówków zawierające deklaracje procedur. Każda dyrektywa pliku #include nagłówka odwołuje się do lokalizacji pliku w względny sposób (z katalogu roboczego aplikacji):

#include <stdlib.h>

gdy ścieżka bezwzględna (rzeczywista lokalizacja systemu plików) pliku może być następująca:

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

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

_fullpath Automatycznie obsługuje argumenty ciągów wielobajtowych znaków zgodnie z potrzebami, rozpoznając sekwencje wielobajtowe znaków zgodnie ze stroną kodową wielobajtową, która jest obecnie używana. _wfullpath jest wersją szerokoznakową ciągu _fullpath; argumenty ciągów, które mają _wfullpath być ciągami szerokoznakowymi. _wfullpath i _fullpath zachowują się identycznie, z tą różnicą, że _wfullpath nie obsługuje ciągów wielobajtowych znaków.

Jeśli _DEBUG obie _CRTDBG_MAP_ALLOC metody i są zdefiniowane, wywołania do _fullpath i _wfullpath są zastępowane przez wywołania do _fullpath_dbg i _wfullpath_dbg, aby umożliwić debugowanie alokacji pamięci. Aby uzyskać więcej informacji, zobacz _fullpath_dbg, _wfullpath_dbg.

Ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów, jeśli maxlen jest mniejsza lub równa 0. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno wartość EINVAL i zwraca wartość NULL.

Mapowania procedur tekstu ogólnego

Tchar.h Rutynowych _UNICODE and _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tfullpath _fullpath _fullpath _wfullpath

Jeśli bufor ma wartość absPathNULL, _fullpath wywołuje malloc metodę przydzielenia buforu maxLength i ignoruje argument . Jest to odpowiedzialność obiektu wywołującego za cofnięcie przydziału tego buforu (przy użyciu metody ) zgodnie z potrzebami free. relPath Jeśli argument określa dysk, bieżący katalog tego dysku jest połączony ze ścieżką.

Wymagania

Function Wymagany nagłówek
_fullpath <stdlib.h>
_wfullpath <stdlib.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

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

Zobacz też

Obsługa plików
_getcwd, _wgetcwd
_getdcwd, _wgetdcwd
_makepath, _wmakepath
_splitpath, _wsplitpath