Поделиться через


_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