Getting a home directory on Mac OS X using C

How can I get the path to the home directory in Mac OS X using the C language in the XCode editor.

+7
c home-directory macos
source share
3 answers
 #include <stdlib.h> #include <stdio.h> int main(void) { const char *homeDir = getenv("HOME"); if (homeDir) printf("Home directory is %s\n", homeDir); else printf("Couldn't figure it out.\n"); return 0; } 
+6
source share

This should work under Linux, Unix and OS X, for Windows you need to make a small modification.

 #include <stdlib.h> #include <stdio.h> #include <pwd.h> #include <unistd.h> int main(void) { const char *homeDir = getenv("HOME"); if !homeDir { struct passwd* pwd = getpwuid(getuid()); if (pwd) homeDir = pwd->pw_dir; } printf("Home directory is %s\n", homeDir); return 0; } 

+11
source share

with FSFindFolder:

 UInt8 path[1024]; FSRef file; FSFindFolder( kOnAppropriateDisk , kCurrentUserFolderType , kCreateFolder , &file ); FSRefMakePath( &file , path , sizeof(path) ); 

with CSCopyUserName:

 char path[1024]; CFStringRef name = CSCopyUserName( true ); CFStringRef full = CFStringCreateWithFormat( NULL , NULL , CFSTR( "/Users/%@" ) , name ); CFStringGetCString( full , path , sizeof(path) , kCFStringEncodingUTF8 ); // release strings 

with NSHomeDirectory:

 char path[1024]; CFStringGetCString( (CFStringRef)NSHomeDirectory() , path , sizeof(path) , kCFStringEncodingUTF8 ); 

note that the path may use UTF8 characters.

+8
source share

All Articles