_searchenv
, _wsearchenv
Používá cesty prostředí k vyhledání souboru. K dispozici jsou bezpečnější verze těchto funkcí; viz _searchenv_s
, _wsearchenv_s
.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
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
Parametry
filename
Název souboru, který chcete vyhledat.
varname
Prostředí, které se má hledat.
pathname
Vyrovnávací paměť pro uložení úplné cesty.
Poznámky
Rutina _searchenv
vyhledá cílový soubor v zadané doméně. Proměnnou varname
může být libovolné prostředí nebo uživatelsky definovaná proměnná, PATH
například , LIB
nebo INCLUDE
– určující seznam cest k adresářům. Vzhledem k tomu _searchenv
, že se rozlišují malá a velká písmena, varname
by se měla shodovat s případem proměnné prostředí.
Rutina nejprve vyhledá soubor v aktuálním pracovním adresáři. Pokud soubor nenajde, projde adresáři, které jsou určené proměnnou prostředí. Pokud je cílový soubor v jednom z těchto adresářů, nově vytvořená cesta se zkopíruje do pathname
. filename
Pokud se soubor nenajde, pathname
obsahuje prázdný řetězec ukončený hodnotou null.
Vyrovnávací pathname
paměť by měla mít délku alespoň _MAX_PATH
znaků, aby vyhovovala celé délce názvu vytvořené cesty. _searchenv
Jinak může vyrovnávací paměť přetečením pathname
způsobit neočekávané chování.
_wsearchenv
je verze širokého znaku _searchenv
a argumenty, které mají _wsearchenv
být řetězce širokého znaku. _wsearchenv
a _searchenv
chovat se stejně jinak.
Pokud filename
je prázdný řetězec, vrátí tyto funkce ENOENT
.
Pokud filename
nebo pathname
je NULL
ukazatel, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povolené provádění pokračovat, vrátí tyto funkce hodnotu -1 a nastaví errno
se na EINVAL
hodnotu .
Další informace o errno
kódech chyb najdete v tématu errno
konstanty.
V jazyce C++ mají tyto funkce přetížení šablon, které vyvolávají novější, bezpečnější protějšky těchto funkcí. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tsearchenv |
_searchenv |
_searchenv |
_wsearchenv |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_searchenv |
<stdlib.h> |
_wsearchenv |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Ovládací prvek adresář
getenv
, _wgetenv
_putenv
, _wputenv
_searchenv_s
, _wsearchenv_s