Gå til innhold

Lage program for å scanne innhold i mapper, for så å printe det til txt-fil


Anbefalte innlegg

Hepp. Jeg har lest litt om C++ og lagd små testprogrammer. Men for å lære meg det litt mer grundigere følte jeg at jeg måtte ha ett faktisk problem å løse.

 

Jeg har en filserver med mange disker, mapper og filer. til tider er det vanskelig å finne fram på den. Er det mulighet for å lage ett program som scanner de diskene\mappene og så kjøre dette ut til en tekst fil.

 

Filserveren kjører kubuntu 7.10

 

Spørsmålet er om dette er teoretisk mulig? Er kjedelig å bruke mange timer på noe som aldri ville fungert. Og om det er mulig kan noen gi meg ett tupp i riktig retning med tanke på funksjon som må brukes for å scanne diskene?

Endret av kristian.k
Lenke til kommentar
Videoannonse
Annonse

Poenget var jo å ha en utfordrende jobb som jeg kan gjøre i C++, tviler ikke på at det kan scriptes kjappere og enklere\eller for den saks skyld legge inn program som gjør det automatisk.

 

Men da får jeg begynne å lese meg til det. Hvis folk vil komme med tips og triks så kjør på.

Lenke til kommentar
Poenget var jo å ha en utfordrende jobb som jeg kan gjøre i C++, tviler ikke på at det kan scriptes kjappere og enklere\eller for den saks skyld legge inn program som gjør det automatisk.

 

Men da får jeg begynne å lese meg til det. Hvis folk vil komme med tips og triks så kjør på.

 

Siden du kjører Linux skulle dette være en smal sak.

Riktignok blir dette mer C enn C++, men du kan jo lage fine objekter rundt systemkallene du trenger.

 

Noen manual sider du kan kikke på:

opendir og readdir

Lenke til kommentar

Jau, da holder jeg på her. Med opendir\readdir får jeg uten problem listet opp innhold i mapper. Men jeg får alt innholdet uten mellomrom, slik at det vanskelig å skille filer fra hverandre.

#include <errno.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
DIR *pdir;
struct dirent *pent;

pdir=opendir("/home/kkarls/Dokumenter"); //I dette forsøket mitt hjemmeområdet
if (!pdir){
printf ("opendir() failure; terminating");
exit(1);
}
errno=0;
while ((pent=readdir(pdir))){
 printf("%s", pent->d_name);
}
if (errno){
printf ("readdir() failure; terminating");
exit(1);
}
closedir(pdir);
}

 

Jeg har også funnet en funksjon som heter "myfile" som gjør at jeg får lagret tekststrenger i ei tekstfil, men hvordan får jeg utskriften fra mappa inn i tekstfilen? Når jeg skriver "ett eller annet" så kommet dette rett inn i tekstfilen.Men så prøver jeg litt rundt med prinft og sånt, og da kommer det bare noen tall opp i tekstfila.

 

Kommer selvfølgelig til å rote rundt selv etter svar, men tar imot hint med stor takk :)

Lenke til kommentar
Jau, da holder jeg på her. Med opendir\readdir får jeg uten problem listet opp innhold i mapper. Men jeg får alt innholdet uten mellomrom, slik at det vanskelig å skille filer fra hverandre.

 

Legg på en '\n' i printf() for å legge en newline mellom hver utskrift:

printf("%s\n", pent->d_name);

 

Skal du skrive output til fil kan det være lurt å se på fprintf og tilsvarende kall til fopen og fclose() for å åpne og lukke fila.

printf("Hei") er forøvrig det samme som fprintf(stdout, "Hei"), hvor stdout (og stderr) er filer som er åpnet automatisk.

Lenke til kommentar

Jeg vil kanskje tatt en titt på ftw.h.

<ftw.h>(P) POSIX Programmer’s Manual <ftw.h>(P)

 

NAME

ftw.h - file tree traversal

 

Dette er riktignok C, og du må spesifisere for compileren at du vil ha SUSV3 kompatibel kompilering, men det burde ikke være noe stress, spesielt ikke hvis du bruker gcc/g++/glibc. Den funksjonen du vil bruke i ftw.h er nftw.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...