使用C语言在Mac OS X中获取主目录

如何在XCode编辑器中使用C语言获取Mac OS X中主目录的路径。

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

这应该适用于Linux,Unix和OS X,对于Windows,您需要稍作修改。

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

使用FSFindFolder:

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

使用CSCopyUserName:

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

与NSHomeDirectory:

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

请注意该路径可以使用UTF8字符。