_searchenv, _wsearchenv

Usa las rutas de acceso de entorno para buscar un archivo. Hay disponibles versiones más seguras de estas funciones; consulte _searchenv_s, _wsearchenv_s.

Importante

Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.

Sintaxis

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

Parámetros

filename
Nombre del archivo que se va a buscar.

varname
Entorno en el que se va a buscar.

pathname
Búfer en el que se va a almacenar la ruta de acceso completa.

Comentarios

Las rutina _searchenv busca el archivo de destino en el dominio especificado. La variable varname puede ser cualquier variable de entorno o definida por el usuario (por ejemplo, PATH, LIB o INCLUDE) que especifique una lista de rutas de acceso de directorio. Dado que _searchenv distingue entre mayúsculas y minúsculas, varname debe coincidir con las mayúsculas y minúsculas de la variable de entorno.

En primer lugar, la rutina busca el archivo en el directorio de trabajo actual. Si no encuentra el archivo, examina los directorios especificados por la variable de entorno. Si el archivo de destino está en uno de esos directorios, la ruta de acceso creada recientemente se copia en pathname. Si no se encuentra el filename archivo, pathname contiene una cadena vacía terminada en NULL.

El búfer de pathname debe tener _MAX_PATH caracteres como mínimo, para dar cabida a todo el nombre de ruta de acceso creada. En caso contrario, _searchenv puede saturar el búfer de pathname y generar un comportamiento inesperado.

_wsearchenv es una versión de caracteres anchos de _searchenv, y los argumentos para _wsearchenv también son cadenas de caracteres anchos. Por lo demás,_wsearchenv y _searchenv se comportan de forma idéntica.

Si filename es una cadena vacía, estas funciones devuelven ENOENT.

Si filename o pathname es un NULL puntero, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven -1 y establecen errno en EINVAL.

Para obtener más información sobre errno los códigos de error y , vea errno constantes.

En C++, estas funciones tienen sobrecargas de plantilla que invocan a los homólogos más recientes y seguros de dichas funciones. Para obtener más información, consulte Sobrecargas de plantilla seguras.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tsearchenv _searchenv _searchenv _wsearchenv

Requisitos

Routine Encabezado necesario
_searchenv <stdlib.h>
_wsearchenv <stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Vea también

Control de directorio
getenv, _wgetenv
_putenv, _wputenv
_searchenv_s, _wsearchenv_s