Wie das aktuelle Verzeichnis in einem C-Programm zu bekommen?
-
08-07-2019 - |
Frage
Ich mache ein C-Programm, wo ich das Verzeichnis zu erhalten, die das Programm aus gestartet. Dieses Programm ist für UNIX-Computer geschrieben. Ich habe mir bei opendir()
und telldir()
, aber telldir()
gibt ein off_t (long int)
, so dass es nicht wirklich hilft mir nicht.
Wie kann ich den aktuellen Pfad in einem String (char array) bekommen?
Lösung
Haben Sie hatte einen Blick auf getcwd()
?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
Einfaches Beispiel:
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
Andere Tipps
Manpage für getcwd
nachschlagen.
Obwohl die Frage Unix ist markiert, die Menschen auch, sie zu besuchen bekommen, wenn ihre Zielplattform Windows ist, und die Antwort für Windows ist die GetCurrentDirectory()
Funktion:
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
Diese Antworten gelten sowohl für C und C ++ Code.
Link vorgeschlagen von user4581301 in einem Kommentar auf eine andere Frage, und wie die aktuelle Top-Wahl mit einer Google-Suche ‚Website überprüft :. microsoft.com GetCurrentDirectory‘
#include <stdio.h> /* defines FILENAME_MAX */
//#define WINDOWS /* uncomment this line to use it for windows.*/
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
int main(){
char buff[FILENAME_MAX];
GetCurrentDir( buff, FILENAME_MAX );
printf("Current working dir: %s\n", buff);
return 1;
}
Beachten Sie, dass getcwd(3)
auch in Microsofts libc verfügbar: