unix - How to get the current directory in a C program?

ID : 20240

viewed : 30

Tags : cunixworking-directory

Top 5 Answer for unix - How to get the current directory in a C program?

vote vote

92

Have you had a look at getcwd()?

#include <unistd.h> char *getcwd(char *buf, size_t size); 

Simple example:

#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; } 
vote vote

82

Look up the man page for getcwd.

vote vote

78

Although the question is tagged Unix, people also get to visit it when their target platform is Windows, and the answer for Windows is the GetCurrentDirectory() function:

DWORD WINAPI GetCurrentDirectory(   _In_  DWORD  nBufferLength,   _Out_ LPTSTR lpBuffer ); 

These answers apply to both C and C++ code.

Link suggested by user4581301 in a comment to another question, and verified as the current top choice with a Google search 'site:microsoft.com getcurrentdirectory'.

vote vote

62

#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; } 
vote vote

56

Note that getcwd(3) is also available in Microsoft's libc: getcwd(3), and works the same way you'd expect.

Must link with -loldnames (oldnames.lib, which is done automatically in most cases), or use _getcwd(). The unprefixed version is unavailable under Windows RT.

Top 3 video Explaining unix - How to get the current directory in a C program?

Related QUESTION?