Как я могу получить путь к домашнему каталогу в 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.