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?

War es hilfreich?

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:

scroll top