_searchenv
, _wsearchenv
Verwendet Umgebungspfade für die Suche nach einer Datei. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _searchenv_s
, _wsearchenv_s
.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
void _searchenv(
const char *filename,
const char *varname,
char *pathname
);
void _wsearchenv(
const wchar_t *filename,
const wchar_t *varname,
wchar_t *pathname
);
template <size_t size>
void _searchenv(
const char *filename,
const char *varname,
char (&pathname)[size]
); // C++ only
template <size_t size>
void _wsearchenv(
const wchar_t *filename,
const wchar_t *varname,
wchar_t (&pathname)[size]
); // C++ only
Parameter
filename
Der Name der zu suchenden Datei.
varname
Zu durchsuchende Umgebung.
pathname
Puffer zum Speichern des vollständigen Pfades.
Hinweise
Die _searchenv
-Routine sucht in der angegebenen Domäne nach der Zieldatei. Die varname
-Variable kann jede beliebige Umgebungsvariable oder benutzerdefinierte Variable sein, die eine Liste von Verzeichnispfaden angibt, wie z. B. PATH
, LIB
und INCLUDE
. Da _searchenv
die Groß-/Kleinschreibung beachtet, sollte varname
mit der Groß-/Kleinschreibung der Umgebungsvariablen übereinstimmen.
Die Routine sucht zuerst im aktuellen Arbeitsverzeichnis nach der Datei. Wenn die Datei nicht gefunden wird, durchsieht sie die Verzeichnisse, die von der Umgebungsvariable angegeben werden. Wenn die Zieldatei in einem dieser Verzeichnisse ist, wird der neu erstellte Pfad in pathname
kopiert. Wenn die filename
Datei nicht gefunden wird, pathname
enthält eine leere null-beendete Zeichenfolge.
Der Puffer pathname
sollte mindestens _MAX_PATH
Zeichen lang sein, um die volle Länge des erstellten Pfadnamens zu unterstützen. Andernfalls kann _searchenv
den pathname
-Puffer überlaufen lassen, was zu einem unerwarteten Verhalten führt.
_wsearchenv
ist eine Breitzeichenversion von _searchenv
. Die Argumente für _wsearchenv
sind Zeichenfolgen mit Breitzeichen. _wsearchenv
und _searchenv
verhalten sich andernfalls identisch.
Wenn filename
eine leere Zeichenfolge ist, geben diese Funktionen ENOENT
zurück.
Wenn filename
oder pathname
ein NULL
Zeiger ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen "– 1" zurück und legen errno
auf EINVAL
fest.
Weitere Informationen zu errno
und Fehlercodes finden Sie unter errno
Konstanten.
In C++ haben diese Funktionen Vorlagenüberladungen, mit denen die neueren, sicheren Entsprechungen dieser Funktionen aufgerufen werden. Weitere Informationen finden Sie unter Secure Template Overloads.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
Tchar.h-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tsearchenv |
_searchenv |
_searchenv |
_wsearchenv |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_searchenv |
<stdlib.h> |
_wsearchenv |
<stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_searchenv.c
// compile with: /W3
// This program searches for a file in
// a directory that's specified by an environment variable.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char pathbuffer[_MAX_PATH];
char searchfile[] = "CL.EXE";
char envvar[] = "PATH";
// Search for file in PATH environment variable:
_searchenv( searchfile, envvar, pathbuffer ); // C4996
// Note: _searchenv is deprecated; consider using _searchenv_s
if( *pathbuffer != '\0' )
printf( "Path for %s:\n%s\n", searchfile, pathbuffer );
else
printf( "%s not found\n", searchfile );
}
Path for CL.EXE:
C:\Program Files\Microsoft Visual Studio 8\VC\BIN\CL.EXE
Siehe auch
Verzeichnissteuerelement
getenv
, _wgetenv
_putenv
, _wputenv
_searchenv_s
, _wsearchenv_s