_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

См. также

Ссылки

Управление каталогами

_chdir, _wchdir

_mkdir, _wmkdir

_rmdir, _wrmdir