_fullpath, _wfullpath
Erstellt ein absoluter oder einen vollständigen Pfadnamen für den angegebenen relativen Pfadnamen.
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
Parameter
absPath
Ein Zeiger auf einen Puffer, der die absolute oder den vollständigen Pfadnamen enthält, bzw. NULL.relPath
Der relative Pfad.maxLength
Maximale Länge des absoluten Pfadnamenpuffers (absPath).Diese Länge ist in Bytes für _fullpath aber in Breitzeichen (wchar_t) für _wfullpath.
Rückgabewert
Jede dieser Funktionen gibt einen Zeiger auf einen Puffer zurück, der den absoluten Pfadnamen (absPath) enthält.Wenn ein Fehler (z. B. wenn der Wert, der in relPath übergeben wird, einen Laufwerkbuchstaben enthält, der ungültig ist oder nicht gefunden werden kann oder wenn die Länge des erstellten absoluten Pfadnamens (absPath) größer als maxLength), die Funktion zurückgibt NULLvorhanden ist.
Hinweise
Die _fullpath-Funktion erweitert den relativen Pfadnamen in relPath auf den vollqualifizierten oder absoluten Pfad und speichert diesen Namen in absPath*.* Wenn absPath NULL ist, wird malloc verwendet, um einen ausreichenden Puffer der Länge zuzuordnen, um den Pfadnamen enthalten soll.Der Aufrufer ist dafür verantwortlich, diesen Puffer freizugeben.Ein relativer Pfad gibt einen Pfad zu einem anderen Speicherort vom aktuellen Speicherort (beispielsweise im aktuellen Arbeitsverzeichnis: „.").Der absolute Pfadname ist die Erweiterung eines relativen Pfadnamens, der den gesamten Pfad, der angibt, um den gewünschten Speicherort im Stamm des Dateisystems zu erreichen.Im Gegensatz zu _makepath_fullpath kann verwendet werden, um den absolute Pfadname für relative Pfade (relPath„include). oder „.“//“ im Namen.
Um beispielsweise C-Laufzeit-Routinen verwenden zu können, muss die Anwendung die Headerdateien enthalten, die die Deklarationen für die Routinen enthalten.Jede Headerdatei umfassen Anweisung verweist auf den Speicherort der Datei in einer relativen Art (aus dem Arbeitsverzeichnis der Anwendung):
#include <stdlib.h>
als absolute Pfad (tatsächliche Speicherort des Dateisystems der Datei) lauten:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
Mehrbyte-Zeichenfolgen-Argumente und bei Bedarf automatisch behandelt_fullpathderzeit verwendeten erkennt Mehrbytezeichen sequenzen entsprechend der Mehrbyte-Codepage._wfullpathist eine Breitzeichen-Version von _fullpath. die Zeichenfolgenargumente für _wfullpathsind Zeichenfolgen mit Breitzeichen._wfullpathund _fullpathverhalten sich identisch, mit der Ausnahme, dass nicht behandelte _wfullpathMehrbyte-Zeichenfolgen.
Wenn _DEBUGund _CRTDBG_MAP_ALLOCbeides definiert sind, werden Aufrufe _fullpath und _wfullpath durch Aufrufe von _fullpath_dbg und _wfullpath_dbg ersetzt, um das Debuggen von Speicherbelegungen zu ermöglichen.Weitere Informationen finden Sie unter _fullpath_dbg, _wfullpath_dbg.
Diese Funktion ruft den Handler auf, z. B. ungültige Parameter in Parametervalidierungbeschrieben maxlen kleiner oder gleich 0 ist.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt diese Funktion errno legt diesen fest EINVAL und NULLzurück.
Zuweisung generischer Textroutinen
Tchar.h-Routine |
_UNICODE als auch _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Wenn der absPath Puffer NULList, ruft _fullpathmalloc an, die einen Puffer reservieren und ignoriert das maxLength-Argument.Der Aufrufer ist dafür verantwortlich, ggf. in diesen Puffer mit frei(freigegeben).Wenn das relPath-Argument ein Laufwerk angegeben wird, wird das aktuelle Verzeichnis dieses Laufwerks mit dem Pfad zusammengefasst.
Anforderungen
Funktion |
Erforderlicher Header |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> oder <wchar.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
Beispiel
// 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" );
}