Получение домашнего каталога в Mac OS X с использованием языка C

Как я могу получить путь к домашнему каталогу в Mac OS X используя язык C в редакторе XCode .

 #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.