_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 ENOMEM
wartość , wskazując, że za mało pamięci do przydzielenia maxlen
bajtów (gdy NULL
argument jest podany jako buffer
), lub na ERANGE
wartość , 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_errlist
i _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 maxlen
wartość . 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.
_wgetcwd
jest wersją szerokoznakową ; _getcwd
buffer
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