Ich mache ein C-Programm, in dem ich das Verzeichnis abrufen muss, aus dem das Programm gestartet wird. Dieses Programm wurde für UNIX-Computer geschrieben. Ich habe nachgeschaut opendir()
und telldir()
, gibt aber ein telldir()
zurück off_t (long int)
, also hilft es mir wirklich nicht.
Wie kann ich den aktuellen Pfad in einer Zeichenfolge (char-Array) abrufen?
c
unix
working-directory
CharlesB
quelle
quelle
int main()
sollte seinint main(void)
.char cwd[PATH_MAX+1]
. Oder wenn Sie nicht gerade mit Puffern belästigt werden könnenchar *buf=getcwd(NULL,0);
und wenn Sie fertig sindfree(buf)
(ab POSIX.1-2001)Suchen Sie in der Manpage nach
getcwd
.quelle
man 3 getcwd
. Spaß beiseite, sei nicht anarchonistisch, dieser Beitrag stammt aus dem Jahr 2008, SO waren die Konventionen anders.Obwohl die Frage mit Unix gekennzeichnet ist, können Benutzer sie auch besuchen, wenn ihre Zielplattform Windows ist, und die Antwort für Windows lautet wie folgt
GetCurrentDirectory()
:Diese Antworten gelten sowohl für C- als auch für C ++ - Code.
Link, der von user4581301 in einem Kommentar zu einer anderen Frage vorgeschlagen und mit einer Google-Suche "site: microsoft.com getcurrentdirectory" als aktuelle Top-Wahl verifiziert wurde.
quelle
quelle
Beachten Sie, dass dies
getcwd(3)
auch in Microsoft libc: getcwd (3) verfügbar ist und wie erwartet funktioniert.Muss mit
-loldnames
(oldnames.lib, was in den meisten Fällen automatisch erfolgt) verknüpft oder verwendet werden_getcwd()
. Die nicht fixierte Version ist unter Windows RT nicht verfügbar.quelle
Um das aktuelle Verzeichnis abzurufen (in dem Sie Ihr Zielprogramm ausführen), können Sie den folgenden Beispielcode verwenden, der sowohl für Visual Studio als auch für Linux / MacOS (gcc / clang) in C und C ++ funktioniert:
quelle