_getcwd, _wgetcwd
Získá aktuální pracovní adresář.
Důležité |
---|
Toto API nelze použít v aplikacích, které jsou spuštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW. |
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 ve znacích: char pro _getcwd a wchar_t pro _wgetcwd.
Vrácená hodnota
Vrací ukazatel na parametr buffer.Vrácená hodnota NULL označuje chybu a errno je nastaven buď na hodnotu ENOMEM, označující, že je nedostatek paměti k přidělení maxlen bajtů (pokud je předána hodnota NULL parametru buffer) nebo na hodnotu ERANGE, označující, že cesta je delší než maxlen znaků.Pokud je parametr maxlen menší nebo roven nule, tato funkce vyvolá obslužnou rutinu neplatného parametru, jak je popsáno v tématu Ověření parametru.
Další informace o těchto a dalších návratových kódech naleznete v části _doserrno, errno, _sys_errlist, and _sys_nerr.
Poznámky
Funkce _getcwd získá celou cestu aktuálního pracovního adresáře na výchozí jednotce a uloží ji do parametru buffer.Celočíselný argument maxlen určuje maximální délku cesty.Pokud délka cesty (včetně ukončovacího znaku null) překročí hodnotu parametru maxlen dojde k chybě. Argument buffer může být NULL. Vyrovnávací paměť o velikosti alespoň maxlen (více pouze v případě potřeby) je automaticky přidělena pomocí klíčového slova malloc pro uložení této cesty.Tato vyrovnávací paměť může být později uvolněna voláním funkce free a předáním hodnoty vrácené funkcí _getcwd (ukazatel do přidělené vyrovnávací paměti).
Funkce _getcwd vrátí řetězec představující cestu k aktuálnímu pracovnímu adresáři.Pokud je aktuální pracovní adresář nastaven na kořen, ř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 široko znaková verze _getcwd; argument buffer a návratová hodnota _wgetcwd jsou široko znakové řetězce._wgetcwd a _getcwd se jinak chovají stejně.
Když jsou definovány konstanty _DEBUG a _CRTDBG_MAP_ALLOC, volání funkcí _getcwd a _wgetcwd jsou nahrazena voláními funkcí _getcwd_dbg a _wgetcwd_dbg, což umožňuje ladit přidělování paměti.Další informace naleznete v tématu Funkce _getcwd_dbg a _wgetcwd_dbg.
Rutinní mapování obecného textu
Rutina Tchar.h |
_UNICODE a _MBCS nejsou definovány |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> nebo <wchar.h> |
Další informace o kompatibilitě naleznete v tématu Kompatibilita.
Příklad
// 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);
}
}
Ekvivalent v rozhraní .NET Framework
System::Environment::CurrentDirectory