Avatar billede ahv Nybegynder
29. august 2007 - 21:21 Der er 8 kommentarer og
1 løsning

Split streng ved tag start/slut

Hej C eksperter,

Hvordan kan jeg i C splitte en streng ved en streng? Jeg har fundet utallige løsninger med seperation ved en enkelt char, men ikke ved en hel streng.

Lad os antage jeg har følgende;

<ahv>Hej</ahv>
<ahv>med</ahv>
<exp>ost</exp>
<ahv>dig</ahv>

Hvordan får jeg da indholdet af ahv-tags'ne ud i et array således at jeg har et array der indeholder;

mitArray[0] = 'Hej'
mitArray[1] = 'med'
mitArray[2] = 'dig'

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
29. august 2007 - 21:28 #1
Det maa da stort set vaere samme metode.

Du soeger efter en enkelt char med strchr og du soeger efter en streng med strstr.
Avatar billede arne_v Ekspert
29. august 2007 - 21:35 #2
Eksempel:

#include <stdio.h>
#include <string.h>

void find(char *s, char *start, char *end)
{
    char *p,*p2,tmp[100];
    p = s;
    while((p = strstr(p, start)) != NULL)
    {
        p2 = strstr(p, end);
        strncpy(tmp, p + strlen(start), p2 - p - strlen(start));
        tmp[p2 - p - strlen(start)] = '\0';
        printf("%s\n", tmp);
        p = p2;
    }
}

int main()
{
    char *s = "<ahv>Hej</ahv><ahv>med</ahv><exp>ost</exp><ahv>dig</ahv>";
    find(s, "<ahv>", "</ahv>");
    return 0;
}
Avatar billede ahv Nybegynder
29. august 2007 - 21:37 #3
Hej Arne,

Kan jeg lokke et brugbart eksempel ud ad dig? Jeg er stødt ind i eksempler med strtok.

Tak.
Avatar billede arne_v Ekspert
29. august 2007 - 21:40 #4
Hvis du rent faktisk har et rigtigt XML dokument, saa er der XML parsere til C.

Og de er nok mere sikre end de notorisk drillesyge str funktioner.
Avatar billede ahv Nybegynder
29. august 2007 - 21:46 #5
Hej arne,

Det er netop til et XML dokument jeg skal benytte det. Er det noget som du kan give et hurtigt eksempel på eller skal jeg prøve at google det lidt?
Avatar billede arne_v Ekspert
29. august 2007 - 21:46 #6
Eksemplet er ovenfor.

Jeg tvivler paa at strtok er et godt valg til din problem stilling.
Avatar billede arne_v Ekspert
29. august 2007 - 21:48 #7
Jeg kan maaske godt proeve at lave et simpelt eksempel med LIBXML2 eller EXPAT (de 2
mest bruge XML parsere til ren C).

Men det bliver foerst senere idag/imorgen/fredag.
Avatar billede ahv Nybegynder
29. august 2007 - 21:49 #8
Jeg prøver at søge lidt og se hvad jeg finder, ellers vender jeg tilbage her. Du skal i hvert fald have tak for de gode hints indtil nu. Smid et svar.
Avatar billede arne_v Ekspert
29. august 2007 - 22:16 #9
svar
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

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