2010-05-27 40 views
5

Tôi muốn đặt một loại tệp khóa trong thư mục chính của người dùng trên linux (từ C++) nhưng fopen'ing ~/.fluudit dường như không hoạt động.cách mở tệp trong thư mục nhà của người dùng

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

~ không làm việc ở đây vì nó là vỏ rằng dịch ~ vào thư mục nhà thích hợp. Shell sẽ thay thế ký tự đặc biệt (~) trong dòng lệnh thành đường dẫn tuyệt đối. Do đó ~ không thể được sử dụng trong các chương trình C hoặc C++. – srikanta

Trả lời

10

Bạn có thể sử dụng các biến môi trường HOME và nếu đó là không có mặt, bạn có thể sử dụng cơ sở dữ liệu mật khẩu:

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

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

const char *homedir = pw->pw_dir; 
4

Việc mở rộng ~ đến, nói, getenv("HOME") được gọi globbing và là một cái gì đó bạn cần làm đầu tiên. Bạn đã không nói libaries hoặc khung bạn đang sử dụng, nhưng một số cung cấp này.

Các vấn đề liên quan