Creating a new directory in C
Look at stat
for checking if the directory exists,
And mkdir
, to create a directory.
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>struct stat st = {0};if (stat("/some/directory", &st) == -1) { mkdir("/some/directory", 0700);}
You can see the manual of these functions with the man 2 stat
and man 2 mkdir
commands.
You can use mkdir:
#include <sys/stat.h>#include <sys/types.h>int result = mkdir("/home/me/test.txt", 0777);
I want to write a program that (...) creates the directory and a (...) file inside of it
because this is a very common question, here is the code to create multiple levels of directories and than call fopen. I'm using a gnu extension to print the error message with printf.
void rek_mkdir(char *path) { char *sep = strrchr(path, '/'); if(sep != NULL) { *sep = 0; rek_mkdir(path); *sep = '/'; } if(mkdir(path, 0777) && errno != EEXIST) printf("error while trying to create '%s'\n%m\n", path); }FILE *fopen_mkdir(char *path, char *mode) { char *sep = strrchr(path, '/'); if(sep) { char *path0 = strdup(path); path0[ sep - path ] = 0; rek_mkdir(path0); free(path0); } return fopen(path,mode);}