Partager via


_searchenv, _wsearchenv

Utilise les chemins 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 avec /ZW.

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 chercher.

  • pathname
    Mémoire tampon pour 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 toute variable dédinie par l'environnement ou par l'utilisateur —par exemple, PATH, LIB, ou INCLUDE—qui spécifie une liste de chemins d'accès aux répertoires. Comme _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. Si elle ne trouve pas le fichier, elle parcourt ensuite les répertoires spécifiés par la variable d'environnement. Si le fichier cible est dans un de ces répertoires, le chemin d'accès nouvellement créé est copié dans pathname. Si le fichier filename est introuvable, pathname contient une chaîne vide terminée par le caractère NULL.

La mémoire tampon pathname doit être longue d'au moins _MAX_PATH caractères afin de pouvoir contenir le chemin d'accès construit en entier. Sinon, _searchenv pourrait déborder la mémoire tampon pathname et provoquer un comportement inattendu.

_wsearchenv est une version à caractères larges de _searchenv ; et les arguments de _wsearchenv sont des chaînes à caractères larges. _wsearchenv et _searchenv se comportent sinon de manière identique.

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

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

Pour plus d'informations sur errno et les codes d'erreur, consultez errno, 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.

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

Configuration requise

Routine

En-tête requis

_searchenv

<stdlib.h>

_wsearchenv

<stdlib.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité.

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 );
}
  

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de code non managé.

Voir aussi

Référence

Contrôle de répertoire

getenv, _wgetenv

_putenv, _wputenv

_searchenv_s, _wsearchenv_s