2015-01-31 6 views
0

Я не нашел ответного ответа на этот вопрос.Создайте файл и его родительские каталоги в c

Я хочу, чтобы создать файл и его родительский каталог, в то же время:

пример:

FILE *fd2 = fopen("test/test", "w+"); 

где тест/не существует.

Есть ли способ сделать это?

+1

Да, создайте каталог «test», затем создайте файл «test/test». Я считаю, что создание каталогов зависит от ОС, поэтому укажите свою ОС. – chux

+0

Я работаю над linux. Разве нет возможности автоматически создать каталог? @chux – anothertest

+2

Не так много происходит в C автоматически. – chux

ответ

0

В Linux вы можете сделать это с помощью следующего кода

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
... 
/* check if directory exist */ 
struct stat status = { 0 }; 
if(stat("test", &status) == -1) { 
    /* create it */ 
    mkdir("test", 0700); 
} 
/* open file */ 
FILE *fd2 = fopen("test/test", "w+"); 
... 

Для ситуации, когда существует файл test в первом if заявлении (stat возвращаемое значение равно нулю), вы также можете проверить, если это файл или справочник с использованием макросов S_ISREG и S_ISDIR и поле st_mode из stat struct.

Смежные вопросы