_getcwd, _wgetcwd
Получает текущий рабочий каталог.
Важно!
Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Параметры
buffer
Место хранения пути.maxlen
Максимальная длина пути в символах: char для _getcwd и wchar_t для _wgetcwd.
Возвращаемое значение
Возвращает указатель на buffer. Возвращаемое значение NULL показывает ошибку, errno устанавливается в ENOMEM, показывающее, что недостаточно памяти для выделения maxlen байтов (если аргумент buffer задается как NULL), или в ERANGE, показывающее, что длина пути превосходит количество символов maxlen. Если maxlen меньше или равен нулю, эта функция вызывает обработчик недопустимых параметров, как описано в Проверка параметров.
Дополнительные сведения об этих и других кодах возврата см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.
Заметки
Функция _getcwd получает полный путь текущей рабочей папки на диске по умолчанию и сохраняет ее в buffer. Целочисленный аргумент maxlen указывает максимальную длину пути. Ошибка возникает, если длина пути (включая завершающий нулевой символ) превышает maxlen*.* Аргумент buffer может быть NULL; буфер размером не менее maxlen (больше только при необходимости) автоматически распределяется, используя malloc, для сохранения пути. Этот буфер может быть освобожден путем вызова free и передачи ему возвращаемого _getcwd значения(указатель на распределенный буфер).
_getcwd возвращает строку, которая представляет путь к текущей рабочей папке. Если текущей рабочей папкой является корневой каталог, строка заканчивается обратной косой чертой ( \ ). Если рабочая папка находится в каталоге, отличном от корневого, то строка заканчивается именем каталога, а не обратной косой чертой.
_wgetcwd — это версия функции _getcwd, работающая с расширенными символами; аргумент buffer и возвращаемое значение _wgetcwd являются строками расширенных символов. В остальных случаях поведение _wgetcwd и _getcwd идентично.
Когда _DEBUGи _CRTDBG_MAP_ALLOCопределены, вызовы _getcwd и _wgetcwd заменяются вызовами _getcwd_dbg и _wgetcwd_dbg, чтобы разрешить отладку выделения памяти. Дополнительные сведения см. в _getcwd_dbg, _wgetcwd_dbg.
Универсальное текстовое сопоставление функций
Подпрограмма Tchar.h |
_UNICODE и _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_getcwd.c
// This program places the name of the current directory in the
// buffer array, then displays the name of the current directory
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char* buffer;
// Get the current working directory:
if( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
free(buffer);
}
}
Эквивалент в .NET Framework
System::Environment::CurrentDirectory