_searchenv
, _wsearchenv
Использует пути в среде для поиска файла. Доступны более безопасные версии этих функций; see _searchenv_s
, _wsearchenv_s
.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
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
Параметры
filename
Имя искомого файла.
varname
Искомая среда.
pathname
Буфер для хранения полного пути.
Замечания
Процедура _searchenv
ищет целевой файл в указанном домене. Переменной varname
может быть любая переменная среды или переменная, определяемая пользователем, например PATH
, LIB
или INCLUDE
, и определяющая список путей к каталогам. Поскольку процедура _searchenv
чувствительна к регистру, значение параметра varname
должно соответствовать регистру переменной среды.
Сначала процедура выполняет поиск файла в текущем рабочем каталоге. Если он не находит файл, он просматривает каталоги, указанные переменной среды. Если целевой файл содержится в одном из этих каталогов, созданный путь копируется в pathname
. filename
Если файл не найден, содержит пустую строку, pathname
завершаемую значением NULL.
Буфер pathname
должен содержать не меньше _MAX_PATH
знаков, чтобы вместить полное имя созданного пути. В противном случае _searchenv
может вызвать переполнение буфера pathname
и привести к непредвиденному поведению.
_wsearchenv
— это двухбайтовая версия _searchenv
, а аргументы для _wsearchenv
представляют собой двухбайтовые строки. Поведение_wsearchenv
и _searchenv
идентично в противном случае.
Если filename
является пустой строкой, эти функции возвращают ENOENT
.
Если filename
или pathname
является NULL
указателем, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если разрешается продолжать выполнение, эти функции возвращают -1 и задают errno
значение EINVAL
.
Дополнительные сведения о errno
кодах ошибок см. в константахerrno
.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые и безопасные аналоги этих функций. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Подпрограмма Tchar.h | _UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tsearchenv |
_searchenv |
_searchenv |
_wsearchenv |
Требования
Маршрут | Обязательный заголовок |
---|---|
_searchenv |
<stdlib.h> |
_wsearchenv |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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
См. также
Элемент управления каталогом
getenv
, _wgetenv
_putenv
, _wputenv
_searchenv_s
, _wsearchenv_s