如何在用户的主文件夹中打开文件

9
我想在Linux用户的主目录中放置一种锁定文件(使用C++),但是fopen打开~/.fluudit似乎不起作用。
fopen("~/.fluudit","w");   //fails

2
在这里 ~ 无法工作,因为是 shell 将 ~ 转换为适当的主目录。Shell 会将命令行中的特殊字符(~)替换为绝对路径。因此,在 C 或 C++ 程序中不能使用 ~。 - srikanta
2个回答

13

您可以使用环境变量HOME,如果没有该变量,则可以使用密码数据库:

#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

struct passwd *pw = getpwuid(getuid());

const char *homedir = pw->pw_dir;

7

~扩展为getenv("HOME"),称为通配符扩展(globbing),这是您需要首先完成的任务。 您没有说明使用哪些库或框架,但有些提供了此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接