Readdir и C++
Есть код, который я нашел на просторах интернета. Главная цель кода - показать все файлы в главной папке и подпапках. Всё работает вроде хорошо (пока не появится 3-я подпапка). Автор, у которого я этот код позаимствовал, тоже мучался с данной ошибкой, но он смог её решить (и выложил этот код как решение данной проблены), но у меня ошибка всё равно осталась. Я решил сделать (понатыкать) проверок. Первая проверка показала, что входя в 3-ю подпапку цикл начинает попросту "крутить" пустоту. Потом я добавил вторую проверку, которая мне показала, что вся проблема в типе. Код полностью готов для копипаста. Просьба помочь!
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <limits.h>
#include <string.h>
#include <sys/stat.h>
void nextdir (char folder[255])
{
DIR *dir;
struct dirent *entry;
dir=opendir(folder);
printf("Открытие папки %s (тип: %d)\n",folder,entry->d_type);
while ((entry=readdir(dir))!=NULL){
printf("_\n");
if (entry->d_type!=4) printf("%s\n",entry->d_name);else
if ((entry->d_type==4) && ((strcmp(entry->d_name,".")!=0) && (strcmp(entry->d_name,"..")!=0))){
folder=strcat(folder,"/");
nextdir(strcat(folder,entry->d_name));
}
}
closedir(dir);
}
int main(int argc, char **argv)
{
char filename[256];
if ( argc < 2 ) strcpy(filename, ".");
else strcpy(filename, argv[1]);
printf("Корневой каталог %s\n\n", filename);
nextdir(filename);
return 0;
}