Udostępnij za pośrednictwem


_getcwd, _wgetcwd

Pobiera bieżący katalog roboczy.

Składnia

char *_getcwd(
   char *buffer,
   int maxlen
);
wchar_t *_wgetcwd(
   wchar_t *buffer,
   int maxlen
);

Parametry

buffer
Lokalizacja magazynu dla ścieżki.

maxlen
Maksymalna długość ścieżki w znakach: char for _getcwd i wchar_t dla _wgetcwd.

Wartość zwracana

Zwraca wskaźnik do buffer. NULL Wartość zwracana wskazuje błąd i errno jest ustawiona na ENOMEMwartość , wskazując, że za mało pamięci do przydzielenia maxlen bajtów (gdy NULL argument jest podany jako buffer), lub na ERANGEwartość , wskazując, że ścieżka jest dłuższa niż maxlen znaki. Jeśli maxlen wartość jest mniejsza lub równa zero, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Uwagi

Funkcja _getcwd pobiera pełną ścieżkę bieżącego katalogu roboczego dla dysku domyślnego i przechowuje go w folderze buffer. Argument maxlen liczby całkowitej określa maksymalną długość ścieżki. Błąd występuje, jeśli długość ścieżki (w tym znak o wartości null kończącej) przekracza maxlenwartość . Argumentem buffer może być NULL; bufor o rozmiarze co najmniej ( maxlen więcej tylko w razie potrzeby) jest przydzielany automatycznie, przy użyciu polecenia malloc, do przechowywania ścieżki. Ten bufor można później zwolnić przez wywołanie free i przekazanie jej wartości zwracanej _getcwd (wskaźnik do przydzielonego buforu).

_getcwd Zwraca ciąg reprezentujący ścieżkę bieżącego katalogu roboczego. Jeśli bieżący katalog roboczy jest katalogiem głównym, ciąg kończy się ukośnikiem odwrotnym (\). Jeśli bieżący katalog roboczy jest katalogiem innym niż katalog główny, ciąg kończy się nazwą katalogu, a nie ukośnikiem odwrotnym.

_wgetcwdjest wersją szerokoznakową ; _getcwdbuffer argument i wartość zwracana _wgetcwd są ciągami o szerokim znaku. _wgetcwd i _getcwd zachowywać się identycznie inaczej.

Gdy _DEBUG metody i _CRTDBG_MAP_ALLOC są zdefiniowane, wywołania i _getcwd _wgetcwd są zastępowane przez wywołania do _getcwd_dbg i _wgetcwd_dbg, aby umożliwić debugowanie alokacji pamięci. Aby uzyskać więcej informacji, zobacz _getcwd_dbg, _wgetcwd_dbg.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Tchar.h rutyna _UNICODE i _MBCS niezdefiniowane _MBCS zdefiniowany _UNICODE zdefiniowany
_tgetcwd _getcwd _getcwd _wgetcwd

Wymagania

Procedura Wymagany nagłówek
_getcwd <direct.h>
_wgetcwd <direct.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// crt_getcwd.c
// Compile with: cl /W4 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> // _getcwd
#include <stdlib.h> // free, perror
#include <stdio.h>  // printf
#include <string.h> // strlen

int main( void )
{
   char* buffer;

   // Get the current working directory:
   if ( (buffer = _getcwd( NULL, 0 )) == NULL )
      perror( "_getcwd error" );
   else
   {
      printf( "%s \nLength: %zu\n", buffer, strlen(buffer) );
      free(buffer);
   }
}
C:\Code

Zobacz też

Kontrolka katalogu
_chdir, _wchdir
_mkdir, _wmkdir
_rmdir, _wrmdir