macos 使用 C 语言在 Mac OS X 中获取主目录
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3020187/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Getting home directory in Mac OS X using C language
提问by boom
How can I get the path of home directory in Mac OS X
using C
language in XCode
editor.
如何在编辑器中Mac OS X
使用C
语言获取主目录的路径XCode
。
采纳答案by dreamlax
#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;
}
回答by sorin
This should work under Linux, Unix and OS X, for Windows you need to make a slight modification.
这应该适用于 Linux、Unix 和 OS X,对于 Windows,您需要稍作修改。
#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;
}
回答by drawnonward
with FSFindFolder:
使用 FSFindFolder:
UInt8 path[1024];
FSRef file;
FSFindFolder( kOnAppropriateDisk , kCurrentUserFolderType , kCreateFolder , &file );
FSRefMakePath( &file , path , sizeof(path) );
with CSCopyUserName:
使用 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:
使用 NSHomeDirectory:
char path[1024];
CFStringGetCString( (CFStringRef)NSHomeDirectory() , path , sizeof(path) , kCFStringEncodingUTF8 );
note that the path can use UTF8 characters.
请注意,路径可以使用 UTF8 字符。