Creating a new directory in C Creating a new directory in C linux linux

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:

$ man 2 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);}