2010-05-27 17 views
5

Kullanıcının giriş dizinine linux (C++) 'dan bir tür kilit dosyası koymak istiyorum ama fopen'ing ~/.fluudit çalışmıyor gibi görünüyor.Kullanıcı ana klasöründeki bir dosyanın nasıl açılacağı

fopen("~/.fluudit","w"); //fails 
+0

~ o çevirir kabuk çünkü uygun ana dizine ~ burada çalışmıyor. Kabuk, komut satırındaki özel karakteri (~) mutlak yola değiştirir. Bu nedenle, C veya C++ programlarında kullanılamaz. – srikanta

cevap

10

Sen HOME değişken ortam kullanabilir ve bu mevcut değilse, şifre veritabanını kullanabilirsiniz:

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

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

const char *homedir = pw->pw_dir; 
4

diyelim ki, ~ genişlemesi, getenv("HOME") globbing denilen ve ilk yapmanız gereken şey olduğunu. Kullandığınız hangi kütüphaneleri veya çerçeveleri söylemediniz, ancak bazıları bunu sağlıyor.

İlgili konular