Avatar billede nini12 Nybegynder
06. maj 2003 - 16:25 Der er 13 kommentarer og
1 løsning

Gemme data i en buffer

Hej er der nogen der har et eksempel på hvordan man gemmer i en buffer.
Jeg har en buffer af char som jeg søger i. Finder det jeg skal, og vil derefter smide det over i en anden buffer. Nogen forslag????
Avatar billede arne_v Ekspert
06. maj 2003 - 16:34 #1
strncpy måske ?
Avatar billede arne_v Ekspert
06. maj 2003 - 16:36 #2
Eksempel:

char buf[100];
char *fnd = "123";
char *s = "abc123xyz";
char *p = strstr(s,fnd);
strncpy(buf,p,strlen(fnd));
buf[strlen(fnd)]='\0';
Avatar billede nini12 Nybegynder
06. maj 2003 - 16:36 #3
hvad er det den gør? jeg er ikke hel sikker.....
Har du måske et eks?
Avatar billede arne_v Ekspert
06. maj 2003 - 16:40 #4
Eksmeplet lavede jeg mens du skrev dit spørgsmål.

Det er en strcpy som maksimalt kopierer n bytes.

NB: ovenstående eksempel kunne forbedres med et test på om p != NULL
Avatar billede arne_v Ekspert
06. maj 2003 - 16:44 #5
Lad os kalde det for et svar.
Avatar billede arne_v Ekspert
06. maj 2003 - 16:45 #6
(nej som det kører)
Avatar billede nini12 Nybegynder
06. maj 2003 - 16:50 #7
ja det kan vi da godt, men det var ikke lige det jeg søgte....
Jeg har jo lavet en søgning og fundet frem til ( eks. fra igår)
farve=gul
farvetype=lyse
Herefter ville jeg smide resultatet i en ny buffer.
Avatar billede arne_v Ekspert
06. maj 2003 - 16:56 #8
Måske snarere:

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

int locate(char *buffer, char *namstr, char *valstr)
{
    int i;
    char *parse = strstr(buffer, namstr);
    if(parse==NULL) return 0;
    parse = parse + strlen(namstr);
 
    i = 0;
    while(parse[i]!='&' && parse[i]!='\0')
    {
      valstr[i]=parse[i];
      i++;
    }
    valstr[i]='\0';
    return 1;
}


int main()
{
    char farve[11];
    char farvetype[11];
    char *buffer = "farve=gul&farvetype=lyse";
    locate(buffer, "farve=", farve);
    locate(buffer, "farvetype=", farvetype);
    printf("%s\n",farve);
    printf("%s\n",farvetype);
}
Avatar billede nini12 Nybegynder
06. maj 2003 - 17:05 #9
Tak men det er stadigvæk ikke det jeg søger, for farve og farvetype er ikke ens hvergang. Jeg indlæser en ny farve og en ny farvetype hvergang. Så efter der er blevet fundet frem til den tilfældige farve og farvetype, skal det over i ny buffer.
Avatar billede arne_v Ekspert
06. maj 2003 - 17:08 #10
Du har en streng/buffer.

Den indeholder "farve=x&farvetype=y" hvor x og y kan være hvad som helst.

locate metoden kan hive x og y ud ianset hvad x og y er.

char *buffer = "farve=gul&farvetype=lyse";

var kun et lille eksmpel for at kunne teste om det virkede.
Avatar billede arne_v Ekspert
06. maj 2003 - 17:08 #11
Snakker jeg sort ?
Avatar billede nini12 Nybegynder
06. maj 2003 - 17:11 #12
måske snakker vi forbi hinanden, hvis det er tilfældigt hvordan kan man så skrive char *buffer = "farve=gul&farvetype=lyse";
Avatar billede nini12 Nybegynder
06. maj 2003 - 17:29 #13
har den i orden nu.
Avatar billede arne_v Ekspert
06. maj 2003 - 18:13 #14
OK - skriv igen hvis der er noget.
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