2011-07-14 5 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()は一度に1つのディレクトリのみを作成します。親ディレクトリが存在しない場合は、最初に個別に作成する必要があります。

+0

もちろん、ありがとう! – newbie

1

ほとんどの場合、ネストされたディレクトリを作成しようとしていて、その親が存在しないため、ディレクトリを作成できません。 mkdirは、ディレクトリを再帰的に作成することはできません。しかし、プログラムの戻りコードとエラーを適切にチェックしない限り、推測することはできません。

関連する問題