_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 NULL
wartość .
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 NULL
wartość , 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 rutyna |
_UNICODE and _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Jeśli bufor ma wartość absPath
NULL
, _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