Как написать функцию, которая возвращает все имена файлов в каталоге, включая файлы в подкаталогах.Пока что у меня есть что-то подобное, но это не работает правильно, я пытаюсь вызвать эту функцию и распечатать каждый элемент, он печатает только первый элемент.другой подход написания этой функции?
char **allFiles(char *dir, OPTIONS opts) {
char **allfiles = malloc(sizeof(char **));
struct dirent *dp;
while((dp = readdir(dirp)) != NULL) {
if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0)
continue;
if (dp->d_type == DT_DIR)
allfiles = allFiles(strcat(strcat(dir, "/"), dp->d_name));
if (dp->d_type != DT_DIR)
*allfiles = strdup(strcat(strcat(strdup(dir), "/"), dp->d_name));
++allfiles;
}
closedir(dirp);
return allfiles;
}