Sdílet prostřednictvím


_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á, PATHnapříklad , LIBnebo 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 _searchenva 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 EINVALhodnotu .

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 Definovány _UNICODE Definovány
_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