Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

написать из рекурсии цикл

83K
14 июня 2012 года
M.aria
1 / / 14.06.2012
Здравствуйте!
Помогите переделывать функцию, написанную рекурсивно, в функцию без рекурсии. Трудности, что рекурсия в цикле - у меня тут заканчиваются идеи.
Сама функция:

Код:
int FindDir(char filename[]){
    DIR *dirp;
    struct dirent *dp;
    if( (dirp = opendir(filename) ) == NULL )   return 1;
    do{
        if((dp = readdir(dirp)) != NULL){
            if(lstat(dp->d_name, &buf) == -1)   return 1;
            if(S_ISDIR(buf.st_mode)){
                if(strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0){
                    if(chdir(dp->d_name)== -1)  return;
                    //тут делаю с названием папок необходимые мне действия
                    FindDir(".");
                    if(chdir("../")== -1)   return 1;
                }
            }
        }
    }while(dp != NULL);
    return 0;
}
И второе - функиця верно проходит папки лишь из запускаемой дериктории, то есть всякий раз приходиться писать

 
Код:
chdir(директория, по которой нужно пройтись);
    FindDir(".");
    chdir(директория, в которой находиться программа);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог