Avatar billede cvpcvp Nybegynder
21. juni 2003 - 17:09 Der er 2 kommentarer og
1 løsning

søgning i fil og udhentning af elementer i filen

jeg har en fil som indeholder noget der liger:

¤1#item1¤2#item2¤3_1#item3_1¤3_2#item3_2¤4#item4

er det muligt på en eller anden måde at finde det elementer jeg søger (f.eks. 3_2) og så hente de tilhørende
data (her item3_2)

kunne evt. bruge fseek men hvordan?
Avatar billede arne_v Ekspert
21. juni 2003 - 17:19 #1
fseek kan du kun bruge hvis du kender byte offsettet til elementer.

Det gør du ikke med typiske tekst filer med variabel linie længde.

Formentlig vil du skulle parse filen og hvie det ud du skal bruge.

Hvis du skal bruge flere elementer og du ved at filen ikke
er vildt stor, så bør du nok overveje at læse hele file op i
memory i en data struktur der gør at du nemt kan finde et element.
Avatar billede cvpcvp Nybegynder
21. juni 2003 - 17:27 #2
hvis jeg hiver hele indholdet af filen ind :

FILE *stream;
    char *tekst;
    long file_len=0;

  /* Open for read (will fail if file "data" does not exist) */
    if( (stream  = fopen( filnavn, "r" )) == NULL ){}
           
    if ( fseek(stream, 0, SEEK_END) != 0 )
   
        file_len = ftell(stream);


  if ( fseek(stream, 0, SEEK_SET ) != 0 )
  {}
         
  tekst = new char[file_len+10];

  fread( tekst, sizeof( char ), file_len, stream );
 
  tekst[file_len] = 0;

er det så ikke muligt at finde det jeg søger i tekst?
Avatar billede arne_v Ekspert
21. juni 2003 - 17:32 #3
Jo. Noget i retning af:

char *p,*p2;
char buf[100];
...
p = strstr(tekst,"3_2#");  // find start 3_2
p += strlen("3_2#"); // find start data matching 3_2
p2 = strchr(p,'¤'); // find end marker
strncpy(buf, p, p2-p); // hent data
buf[p2-p] = '\0'; // terminal data med nul byte
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