Saya ingin menulis program yang (...) membuat direktori dan file (...) di dalamnya
karena ini adalah pertanyaan yang sangat umum, berikut adalah kode untuk membuat beberapa tingkat direktori dan kemudian memanggil fopen. Saya menggunakan ekstensi gnu untuk mencetak pesan kesalahan dengan 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);
}