_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