_fullpath, _wfullpath
Tworzy ścieżkę bezwzględną lub pełnej nazwy nazwy określonej ścieżki względnej.
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 bufora zawierającego ścieżkę bezwzględną lub Pełna nazwa lub wartość NULL.relPath
Nazwa ścieżki względnej.maxLength
Maksymalna długość buforu nazwy ścieżki bezwzględnej (absPath).Ta długość jest w bajtach dla _fullpath , ale w szerokości znaków (wchar_t) dla _wfullpath.
Wartość zwracana
Każda z tych funkcji zwraca wskaźnik do bufora zawierającego nazwę ścieżki bezwzględnej (absPath).Jeśli błąd (na przykład, jeśli wartość przekazana w relPath zawiera litery dysku, która nie jest prawidłowy lub nie można znaleźć, lub jeśli długość nazwy utworzone ścieżki bezwzględnej (absPath) jest większa niż maxLength), funkcja zwraca NULL.
Uwagi
_fullpath Funkcja rozszerza nazwy ścieżki względnej w relPath pełni kwalifikowana lub bezwzględną ścieżkę i magazyny, to nazwa w absPath*.* Jeśli absPath ma wartość NULL, malloc jest używana do alokowania bufor o długości wystarczającej do przechowywania nazwy ścieżki.Jest odpowiedzialny zwolnić buforu wywołującego.Nazwa ścieżki względne określa ścieżkę do innej lokalizacji w bieżącej lokalizacji (takich jak bieżący katalog roboczy: ".").Nazwa ścieżki bezwzględnej jest rozszerzenia nazwy ścieżki względnej, który stanowi całej ścieżki, wymaganych do osiągnięcia w żądane miejsce z katalogu głównego systemu plików.W odróżnieniu od _makepath, _fullpath może służyć do uzyskiwania nazwę ścieżki bezwzględnej ścieżki względne (relPath) zawierające ". /"lub"../ "w ich nazwy.
Na przykład aby użyć procedury uruchomieniowej C, wniosek musi zawierać pliki nagłówka, zawierające deklaracji w zakresie procedur.Każdy plik nagłówkowy zawierają odniesienie do instrukcji lokalizację pliku w sposób względne (z katalog roboczy aplikacji):
#include <stdlib.h>
Kiedy ścieżką bezwzględną (rzeczywistym położeniem systemowym pliku) pliku może być:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
_fullpath automatycznie obsługuje argumentów łańcuch znaków wielobajtowych, odpowiednio, uznając sekwencje znaków wielobajtowych, zgodnie z obecnie używanej strony kodowej wielobajtowych._wfullpath jest to wersja szerokich znaków _fullpath; argumenty ciąg _wfullpath są ciągami szerokich znaków._wfullpath i _fullpath zachowują się identycznie, z wyjątkiem _wfullpath nie obsługuje ciągów znaków wielobajtowych.
Jeśli _DEBUG i _CRTDBG_MAP_ALLOC są zdefiniowane, wywołania _fullpath i _wfullpath zastępuje się przez wywołania _fullpath_dbg i _wfullpath_dbg aby umożliwić debugowanie alokacji pamięci.Aby uzyskać więcej informacji, zobacz _fullpath_dbg, _wfullpath_dbg.
Funkcja ta wywołuje obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru, jeśli maxlen jest mniejsza niż lub równa 0.Jeśli wykonanie może kontynuować, ta funkcja ustawia errno do EINVAL i zwraca NULL.
Tekst rodzajowy rutynowych mapowania
Procedura TCHAR.h |
_UNICODE i _MBCS nie zdefiniowane |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Jeśli absPath bufor jest NULL, _fullpath wywołania malloc przydzielić buforu i ignoruje maxLength argument.Obowiązek deallocate tego buforu wywołującego (za pomocą wolnego) jako właściwe.Jeśli relPath argument określa dysk, bieżący katalog tego dysku jest połączona ze ścieżką.
Wymagania
Funkcja |
Wymaganego nagłówka |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> lub <wchar.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
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" );
}