Getting home directory in Mac OS X using C language

后端 未结 3 802
無奈伤痛
無奈伤痛 2020-12-18 00:05

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

相关标签:
3条回答
  • 2020-12-18 00:17

    This should work under Linux, Unix and OS X, for Windows you need to make a slight 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;
    }
    

    0 讨论(0)
  • 2020-12-18 00:21

    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 can use UTF8 characters.

    0 讨论(0)
  • 2020-12-18 00:22
    #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;
    }
    
    0 讨论(0)
提交回复
热议问题