|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Jaroslaw Skobelew 2:5047/26.88 11 Nov 2001 03:31:58 To : Ivan Gurov Subject : Обход деpева каталогов --------------------------------------------------------------------------------
Привет , Ivan !
09 Hоя 2001 (Пт) 20:48, Ivan Gurov написал к All:
IG> Hаpод подскажите как сабж pеализовать по-пpоще. Может есть какой-то
IG> пpостой способ без всяких там запоминаний целой кучи SearchRec'ов?
Лови. Программа печатает деревого каталогов в файл. Далее сооброжай.
=== Cut ===
#include <string.h>
#include <stdio.h>
#include <dir.h>
extern unsigned _heaplen=0;
//печатает n пробелов+строку s в файл f
void print_s(FILE *f,int dc,char* s)
{int i;
for(i=0;i<dc;i++) fputc(' ',f);
fprintf(f,"%s\n",s);
}
//печатает все файлы в текущем каталоге
void print_files(FILE *f,int dc)
{int fl;struct ffblk fi;
fl = findfirst("*.*",&fi,0);
while (!fl)
{
strlwr(fi.ff_name); //преобразовать к строчным буквам
print_s(f,dc,fi.ff_name);
fl=findnext(&fi);
}
}
//печатает деревого каталогов на текущем диске
void tree(FILE *f,char* s,int df,int d)
{int fl;struct ffblk fi;
if (s[0]=='.') return;
print_s(f,d,s);
chdir(s);
print_files(f,d+df);
fl = findfirst("*.*",&fi,0x10);
while (!fl)
{
if (fi.ff_attrib&0x10) tree(f,fi.ff_name,df,d+df);
fl=findnext(&fi);
}
chdir("..");
}
void main(void)
{FILE *f;static char dir[256];
getcurdir(0,dir);
f = fopen("disktree.dat", "w");
tree(f,"\\",2,0);
fclose(f);
chdir(dir);
}
=== Cut ===
Будете у нас на Колыме... Милости просим.
Ярослав
--- GoldED/386 3.00.Beta5+
* Origin: (2:5047/26.88)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/34453bef256b.html, оценка из 5, голосов 10
|