2011-07-14 160 views
2

我想使用下面的代碼創建一個目錄。它編譯,但它不創建一個目錄。有什麼建議麼?創建一個目錄

#include <stdio.h> 
#include <string.h> 
#include <sys/stat.h> 
int main(void) 
{ 
    const char base[] = "filename"; 
    char filename [ FILENAME_MAX ]; 
    int number = 42; 
    sprintf(filename, "%s/%d", base, number); 
    printf("filename = \"%s\"\n", filename); 
    mkdir (filename, S_IRWXU); 
    return 0; 
} 
+5

爲什麼不捕獲mkdir的返回碼? linux.die.net/man/3/mkdir – hari

+1

檢查'mkdir'是否返回'-1',因此'errno'的值。 –

+1

確實。試着問它爲什麼不起作用! 'if(mkdir(filename,S_IRWXU)!= 0){perror(「mkdir()error」); }'。 –

回答

2

「filename」目錄是否已經存在? mkdir()一次只能創建一個目錄;如果父目錄也不存在,則必須先單獨創建它。

+0

當然,謝謝! – newbie

1

很可能它無法創建目錄,因爲您試圖創建一個嵌套的目錄,而其父目錄不存在。 mkdir無法遞歸創建目錄。但是,除非您在程序中正確檢查返回碼和錯誤,否則只能猜測。