Partager via


_searchenv, _wsearchenv

Utilise des chemins d’accès d’environnement pour rechercher un fichier. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez _searchenv_s, _wsearchenv_s.

Important

Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

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

Paramètres

filename
Nom du fichier à rechercher.

varname
Environnement dans lequel effectuer la recherche.

pathname
Mémoire tampon destinée à stocker le chemin d’accès complet.

Notes

La routine _searchenv recherche le fichier cible dans le domaine spécifié. La variable varname peut être un environnement ou une variable définie par l'utilisateur quelconque, par exemple, PATH, LIB ou INCLUDE, qui spécifie une liste de chemins d'accès de répertoires. Sachant que _searchenv respecte la casse, varname doit correspondre à la casse de la variable d'environnement.

La routine recherche d'abord le fichier dans le répertoire de travail actuel. S’il ne trouve pas le fichier, il examine les répertoires spécifiés par la variable d’environnement. Si le fichier cible se trouve dans l'un de ces répertoires, le chemin d'accès qui vient d'être créé est copié dans pathname. Si le filename fichier est introuvable, pathname contient une chaîne vide terminée par null.

La mémoire tampon pathname doit faire une longueur minimale de _MAX_PATH caractères pour loger le nom de chemin d'accès construit dans son intégralité. Sinon, _searchenv risque de saturer la mémoire tampon pathname et occasionner un comportement inattendu.

_wsearchenv est une version à caractères larges de _searchenv, et les arguments de _wsearchenv sont des chaînes à caractères larges. Sinon,_wsearchenv et _searchenv se comportent de la même façon.

Si filename est une chaîne vide, ces fonctions retournent ENOENT.

Si filename ou pathname est un NULL pointeur, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et définissent errno avec la valeur EINVAL.

Pour plus d’informations sur les codes d’erreur errno et les codes d’erreur, consultez errno les constantes.

En C++, ces fonctions ont des surcharges de modèle qui appellent les équivalents plus récents et plus sécurisés de ces fonctions. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine Tchar.h _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tsearchenv _searchenv _searchenv _wsearchenv

Spécifications

Routine En-tête requis
_searchenv <stdlib.h>
_wsearchenv <stdlib.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// 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

Voir aussi

Contrôle d’annuaire
getenv, _wgetenv
_putenv, _wputenv
_searchenv_s, _wsearchenv_s