_getcwd
, _wgetcwd
Ruft das aktuelle Arbeitsverzeichnis ab.
Syntax
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Parameter
buffer
Speicherort für den Pfad.
maxlen
Maximale Länge des Pfads in Zeichen: char
für _getcwd
und wchar_t
für _wgetcwd
.
Rückgabewert
Gibt einen Zeiger auf buffer
zurück. Ein NULL
Rückgabewert gibt einen Fehler an und errno
wird entweder auf ENOMEM
, der angibt, dass nicht genügend Arbeitsspeicher vorhanden ist, um Bytes zuzuweisen maxlen
(wenn ein NULL
Argument angegeben buffer
wird) oder ERANGE
, um anzugeben, dass der Pfad länger als maxlen
Zeichen ist. Wenn maxlen
diese Funktion kleiner oder gleich Null ist, ruft diese Funktion einen ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben.
Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Hinweise
Die _getcwd
-Funktion ruft für das Standardlaufwerk den vollständigen Pfad des aktuellen Arbeitsverzeichnis ab und speichert ihn unter buffer
. Das ganzzahlige Argument maxlen
gibt die maximale Länge für den Pfad an. Wenn die Länge des Pfads (einschließlich des beendeten NULL-Zeichens) überschritten wird maxlen
, tritt ein Fehler auf. Das buffer
-Argument kann NULL
sein. Es wird dann automatisch ein Puffer mit einer Mindestgröße von maxlen
(mehr nur bei Bedarf) zugeordnet und malloc
zum Speichern des Pfades verwendet. Dieser Puffer kann später geleert werden, indem free
aufgerufen und der _getcwd
-Rückgabewert (ein Zeiger auf den zugeordneten Puffer) übergeben werden.
_getcwd
gibt eine Zeichenfolge zurück, die den Pfad des aktuellen Arbeitsverzeichnisses repräsentiert. Wenn das aktuelle Arbeitsverzeichnis der Stamm ist, endet die Zeichenfolge mit einem umgekehrten Schrägstrich (\
). Wenn das aktuelle Arbeitsverzeichnis nicht das Stammverzeichnis ist, endet die Zeichenfolge mit dem Verzeichnisnamen und nicht mit einem umgekehrten Schrägstrich.
_wgetcwd
ist eine Breitzeichenversion von _getcwd
. Das Argument buffer
und der Rückgabewert von _wgetcwd
sind Zeichenfolgen mit Breitzeichen. _wgetcwd
und _getcwd
verhalten sich andernfalls identisch.
Wann _DEBUG
definiert und _CRTDBG_MAP_ALLOC
definiert werden, werden Aufrufe an _getcwd
und _wgetcwd
_wgetcwd_dbg
werden durch Aufrufe _getcwd_dbg
ersetzt, damit Sie Speicherzuweisungen debuggen können. Weitere Informationen finden Sie unter _getcwd_dbg
, _wgetcwd_dbg
verwalten.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
Tchar.h -Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Verzeichnissteuerelement
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir