2012-02-28 79 views
0

這是我第一次使用目錄。mkdir和ofstream的問題

我有這樣的代碼片段:

void initialize() 
{ 
    mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 
    mkdir("/cygdrive/c/enc/misc", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 
    ofstream user ("/cygdrive/c/enc/misc/usercount.txt"); 
    if (user.is_open()) 
    user << "0 0" << endl; 
    user.close(); 
    ofstream prompt ("/cygdrive/c/enc/misc/prompt.txt"); 
    if (prompt.is_open()) 
    prompt << "CLI>"; 
    prompt.close(); 
    ofstream randomuser ("/cydrive/c/enc/user/rando.txt"); 
    if (randomuser.is_open()) 
    randomuser << "garbageinfo"; 
    randomuser.close(); 
} 

用戶和提示ofstreams的表現正是我打算,但每當我試圖打開一個ENC /用戶目錄,它只是沒開。這種不一致使我發瘋,想知道發生了什麼?

回答

1

我懷疑mkdir()由於目錄名稱中的拼寫錯誤而失敗。我認爲:

mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 

應該是:

mkdir("/cygdrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 
     ^

如果沒有,檢查的mkdir()的返回值,以確保成功:

if (0 != mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) && 
    EEXIST != errno) 
{ 
    std::cerr << "Failed to create directory: "<< strerror(errno) << "\n"; 
} 
+0

一百萬的感謝!我疲憊的雙眼無法抓住那麼簡單的事情。我會投票,但我是全新的這些部分。 – Sarah 2012-02-28 10:01:18

+0

沒問題。歡迎來到SO。 – hmjd 2012-02-28 10:02:15

+0

如果解決了這個問題,您可以接受答案(通過點擊答案旁邊的勾號大綱,請參閱http://stackoverflow.com/faq)? – hmjd 2012-02-28 10:44:27