Avatar billede fedtoere Praktikant
25. januar 2006 - 01:27 Der er 15 kommentarer og
1 løsning

Traversere filer i direktorier kodet i ansi-c

Mit problem er at jeg gerne vil have lidt hjælp til hvordan jeg kan lave noget kode der traverserer ned igennem en mappe-struktur så alle filerne også i undermapperne bliver listet.
Jeg har lavet lidt inledende kode hvor jeg vha ffblk, findfirst og findnext kan finde frem til alle fillerne i et bestemt direktorie.
Men jeg mangler at kunne behandle underdirektorierne samt de filer de indeholder. De filer de indeholder kan selvfølgelig findes på samme måde som jeg allerede gør, vha ffblk, findfirst og findnext. Men hvordan behandler jeg under direktorierne ?
Avatar billede bertelbrander Novice
25. januar 2006 - 01:41 #1
Recursion er svaret, se f.ex:
http://home20.inet.tele.dk/midgaard/snip/adir.html

(Man kan i øvrigt ikke gøre det i ANSI C, findfirst og venner er extensions.)
Avatar billede fedtoere Praktikant
25. januar 2006 - 01:46 #2
Ja man bruger <dir.h>, det er det du mener med extensions, ikk ?
Jeg checker lige linket.
Avatar billede bertelbrander Novice
25. januar 2006 - 01:52 #3
Jo, dir.h er ikke en standard header fil.

Iøvrigt er der forskellige modeller for forskellige compilere og platforme.
På nogle platforme bruger man opendir/readdir, på andre findfirst/findnext, og windows.h definerer FindFirstFile og FindNextFile
Avatar billede fedtoere Praktikant
25. januar 2006 - 01:55 #4
jeg prøvede lige at tage koden fra dit link ind i min compiler (Borland), jeg fik en masse fejl.
Som om jeg mangler en include af en anden fil end dir.h
Kender du til problemer med Borland compileren mht det ?
Avatar billede bertelbrander Novice
25. januar 2006 - 02:12 #5
Her kompilerer det uden problemer med Borland.
Hvilke fejl får du?
Avatar billede fedtoere Praktikant
25. januar 2006 - 02:21 #6
Undefined structure _finddata_t
undefined function _findfirst
undefined symbol _A_SUBDIR
osv

måske skal jeg bare prøve med f.eks findfirst i stedet for _findfirst...
Avatar billede bertelbrander Novice
25. januar 2006 - 02:31 #7
Ja, det kan du godt prøve.

Jeg kompilerer fra kommandolinen med:
bcc32 dirm.c
Det giver ingen problemer.
Avatar billede fedtoere Praktikant
25. januar 2006 - 02:33 #8
jeg compilerer fra builderen, det er den gamle version 5.02
Måske er det derfor
Avatar billede bertelbrander Novice
26. januar 2006 - 00:12 #9
Builderen bør også have findfirst & venner, prøv uden _
Jeg ved ikke hvordan man laver console apps med Builderen. Hvis du har Borland Builder i din PATH bør du kunne oversætte det fra kommandolinien.
Avatar billede fedtoere Praktikant
26. januar 2006 - 00:24 #10
findfirst og findnext virker (jeg har dog ikke ændret alt så hele programmet virker).
Jeg har dog vha _dos_findfirst fået lavet mig en liste over direktorier.
Er der et problem i at benytte _dos_findfirst osv fra <dos.h> (eks lange filnavne osv) ?
Avatar billede bertelbrander Novice
26. januar 2006 - 00:29 #11
Jeg ved ikke om der er et problem i at bruge _dos_findfirst, har ikke brugt den de seneste 15 år, og dengang var der ikke lange filnavne.

Er der et problem i at bruge findfirst?
Avatar billede fedtoere Praktikant
26. januar 2006 - 00:44 #12
Nej sikkert ikke, men i min desperate kamp for at få noget til at virke så har jeg søgt efter alternative muligheder. Der fald jeg bla over <dos.h> og <stdlib.h>.
Og med _dos får jeg listet direktorierne, det er da i det mindste en start :-)
Avatar billede fedtoere Praktikant
26. januar 2006 - 12:57 #13
Jeg opgiver mit forsøg med 5.02, jeg bruger nu Borland Builder 6.
Det compilerer uden fejl :-)
Avatar billede fedtoere Praktikant
17. oktober 2006 - 01:29 #14
Bertelbrander ligger du et svar, så vil jeg give dig point og lukke denne.
Avatar billede bertelbrander Novice
17. oktober 2006 - 01:58 #15
Jeg samler ikke på point.
Avatar billede fedtoere Praktikant
04. april 2007 - 16:12 #16
Lukket uden at give point videre.
Da  Bertelbrander har givet svaret men ikke ønsker point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

IT & Co ApS

Systemkonsulent

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

KMD A/S

BI Developer
Seneste spørgsmål Seneste aktivitet
I dag 08:31 HVIS med datoer Af HHA i Excel
I går 20:12 Ældre lysstofarmatur (2011) Af ErikHg i Fri debat
I går 14:05 Numerisk liste Af AND i Excel
I går 09:39 Ændre nuller til ovenstående tal Af boro23 i Excel
I går 06:47 videoclip - icon Af Malm i Andet software