slip7 & slip 21
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
int isDirectory(const char* path) {
struct stat statbuf;
if (stat(path, &statbuf) != 0) {
return 0;
}
return S_ISDIR(statbuf.st_mode);
}
int compareStrings(const void* a, const void* b) {
return strcmp((const char**)a, (const char)b);
}
int main() {
DIR* dir;
struct dirent* entry;
char** directories = NULL;
int numDirectories = 0;
dir = opendir(".");
if (dir == NULL) {
perror("Error opening directory");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
if (isDirectory(entry->d_name)) {
// Ignore "." and ".." directories
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
directories = realloc(directories, (numDirectories + 1) * sizeof(char*));
if (directories == NULL) {
perror("Error allocating memory");
return 1;
}
directories[numDirectories] = strdup(entry->d_name);
if (directories[numDirectories] == NULL) {
perror("Error allocating memory");
return 1;
}
numDirectories++;
}
}
qsort(directories, numDirectories, sizeof(char*), compareStrings);
printf("Subdirectories in alphabetical order:\n");
for (int i = 0; i < numDirectories; i++) {
printf("%s\n", directories[i]);
free(directories[i]);
}
free(directories);
closedir(dir);
return 0;
}