_getcwd
, _wgetcwd
Získá aktuální pracovní adresář.
Syntaxe
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Parametry
buffer
Umístění úložiště pro cestu
maxlen
Maximální délka cesty znaků: char
pro _getcwd
a wchar_t
pro _wgetcwd
.
Vrácená hodnota
Vrací ukazatel na parametr buffer
. NULL
Návratová hodnota označuje chybu a errno
je nastavena na ENOMEM
hodnotu , která označuje, že není dostatek paměti k přidělení maxlen
bajtů (pokud NULL
je argument uveden jako buffer
), nebo pro ERANGE
, označující, že cesta je delší než maxlen
znaky. Pokud maxlen
je menší nebo rovna nule, tato funkce vyvolá neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru.
Další informace o těchto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
Poznámky
Funkce _getcwd
získá úplnou cestu aktuálního pracovního adresáře pro výchozí jednotku a uloží ji na buffer
. Celočíselná hodnota maxlen
určuje maximální délku cesty. K chybě dojde, pokud délka cesty (včetně ukončujícího znaku null) překročí maxlen
. Argumentem buffer
může být NULL
; vyrovnávací paměť s alespoň velikostí maxlen
(více pouze v případě potřeby) je automaticky přidělena pomocí , malloc
k uložení cesty. Tuto vyrovnávací paměť lze později uvolnit voláním free
a předáním návratové _getcwd
hodnoty (ukazatel na přidělenou vyrovnávací paměť).
_getcwd
vrátí řetězec, který představuje cestu k aktuálnímu pracovnímu adresáři. Pokud je aktuální pracovní adresář kořenovým adresářem, řetězec končí zpětným lomítkem (\
). Pokud je aktuální pracovní adresář nastaven na jiný adresář než kořenový, řetězec končí názvem adresáře, nikoli zpětným lomítkem.
_wgetcwd
je verze širokého znaku _getcwd
; buffer
argument a návratová _wgetcwd
hodnota jsou řetězce širokých znaků. _wgetcwd
a _getcwd
chovat se stejně jinak.
Pokud _DEBUG
a _CRTDBG_MAP_ALLOC
jsou definovány, volání a _wgetcwd
_getcwd
jsou nahrazena voláními _getcwd_dbg
a _wgetcwd_dbg
, které vám umožní ladit přidělení paměti. Další informace naleznete v tématu _getcwd_dbg
, _wgetcwd_dbg
.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Tchar.h rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Ovládací prvek adresář
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir