Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2011, 23:26   #1
ddima
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 11
Сообщение (Си / Линукс) Вывод содержимого каталога и всех его подкаталогов

Собственно меня интересует только нерабочая рекурсия.

Цитата:
#include <stdio.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>


void dirout(DIR *cdir, char *path);
int main (int argc, char **argv)
{
DIR * dir;
if (argc < 2) { //проверка на кол-во введенных параметров
fprintf (stderr, "Too few arguments\n");
return 1;
}
dir = opendir (argv[1]); //открытие каталога
if (errno==ENOTDIR){
perror("opendir");
return 1;
}
dirout(dir,argv[1]); //Выводит содержимое каталога указанного в argv[1] и всех его подкаталогов
closedir (dir);
return 0;
}

void dirout(DIR *cdir, char *path)
{
DIR *hdir;
char var[100]; //Заносится путь подкаталога
struct dirent *entry;
int flag=0; // Используется для определения был ли открыт каталог, и дальнейшего его закрытия
while ((entry = readdir (cdir)) != NULL){
sprintf(var,"%s/%s",path,entry->d_name); //присваивает переменной путь подкаталога для дальнейшего его использования в рекурсии
hdir=opendir(var); // Пытаемся открыть как каталог элемент на который указывает entry
if (errno == ENOTDIR) //если возникает ошибка (элемент не каталог),
printf ("%s\n", entry->d_name); //то он выводится,
else{
dirout(hdir,var); //если каталог, повторяем действия рекурсивно.
flag=1;
}
}
if (flag==1)
closedir(hdir);
}

Последний раз редактировалось ddima; 26.03.2011 в 23:47.
ddima вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
параллельный вывод в консоль линукс arcer Общие вопросы C/C++ 6 09.11.2010 22:20
Высота ЛистБокс, в зависимости от его содержимого Stilet Общие вопросы .NET 4 27.10.2010 16:48
Командный .bat файл выводящий на экран bmp файлы каталога и его подкаталогов. Avin Помощь студентам 2 11.10.2010 13:59
вывод содержимого street-walker Помощь студентам 1 04.03.2010 21:03
Вывод подкаталогов! werser Помощь студентам 1 18.06.2007 20:23