/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
pointer spørgsmål
Fra : glenn007


Dato : 13-12-02 19:23

Jeg her en buffer pointer ( *lpBuff ) det kører derudaf, men nu vil jeg
gerne have den til at smide de første 3 unsigned char efter hvert $ tegn
ned i et array, hvordan er det nu man gør med den slags. evt
komenteret eksempel ville være kanon lækkert, da jeg ikke har styr på
dette endnu
har prøvet således men duede ikke

void udtag_emner(unsigned char*lpBuff)
{

unsigned char target[3]; // henter Byte 0,1,2,3 I alt 4 Byte/char
   while (*lpBuff=(0x24,target[*lpBuff+3])) // hvis pointer er $ hent
pointer+næste 3 char
   {   

      for (int i = 0 ;i < 4;i++)
      cout << lpBuff[i];
   }
   //TODO   
}
jeg har prøvet dette men det ser ud til der er noget galt, med koden så
den ikke tager de $ og de 3 næste

og en lille ting mere, nogle detr kender syntaksen til at tømme
buffere, eller ved hvilken header jeg kan finde den i ? har prøvet med
free(lpBuff) men det gider den ikke, og det var mit sidste bud. Selv om
jeg nu nok mener det er rigtigt nok.

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Byrial Jensen (13-12-2002)
Kommentar
Fra : Byrial Jensen


Dato : 13-12-02 20:55

glenn007 <glenn007.news@kandu.dk> skrev:
> Jeg her en buffer pointer ( *lpBuff )

Hvorfor har du det? Jeg kan se af din kode (cout) at du bruger C++.

> det kører derudaf, men nu vil jeg
> gerne have den til at smide de første 3 unsigned char efter hvert $ tegn
> ned i et array, hvordan er det nu man gør med den slags. evt
> komenteret eksempel ville være kanon lækkert, da jeg ikke har styr på
> dette endnu

Beklager, jeg gider ikke lave kommenterede eksempler til anonyme.

> har prøvet således men duede ikke
>
> void udtag_emner(unsigned char*lpBuff)
> {
>
> unsigned char target[3]; // henter Byte 0,1,2,3 I alt 4 Byte/char

I det array får du nu kun plads til 3 tegn.

>    while (*lpBuff=(0x24,target[*lpBuff+3])) // hvis pointer er $ hent
> pointer+næste 3 char

Her demonstreres:
- nytteløs brug af komma-operator
- tildeling i betingelse
- læsning af array gennem ukontrolleret indeks.

Måske mener du:

while (lpBuff = strchr (lpBuff, '$'))

men hvad skal target så bruges til?

>    {   
>       for (int i = 0 ;i < 4;i++)
>       cout << lpBuff[i];

Hvorfra ved du at lpBuff[i] er inden for din buffer?

>    }
>    //TODO   
> }
> jeg har prøvet dette men det ser ud til der er noget galt, med koden så
> den ikke tager de $ og de 3 næste
>
> og en lille ting mere, nogle detr kender syntaksen til at tømme
> buffere, eller ved hvilken header jeg kan finde den i ? har prøvet med
> free(lpBuff) men det gider den ikke, og det var mit sidste bud. Selv om
> jeg nu nok mener det er rigtigt nok.

Måske hvis du forklarer hvad du egentlig mener så vi andre også kan
forstå det, og hvis du får et navn.

Bertel Brander (14-12-2002)
Kommentar
Fra : Bertel Brander


Dato : 14-12-02 06:08

glenn007 wrote:

> Jeg her en buffer pointer ( *lpBuff ) det kører derudaf, men nu vil jeg
> gerne have den til at smide de første 3 unsigned char efter hvert $ tegn
> ned i et array, hvordan er det nu man gør med den slags. evt
> komenteret eksempel ville være kanon lækkert, da jeg ikke har styr på
> dette endnu
> har prøvet således men duede ikke

[Snip]

>


void udtag_emner(char *lpBuff)
{
char target[5]; /* Plads til $ + tre naeste + 0 terminator */

while(*lpBuff) /* Koer loekken indtil nul karakteren er fundet */
{
if(*lpBuff == '$')
{
strncpy(target, lpBuff, 4); /* Kopier 4 char ind i target */
target[4] = '\0'; /* Nul terminer target */

printf("%s\n", target); /* Eller cout << target << endl */
}
lpBuff++;
}
}

>
> og en lille ting mere, nogle detr kender syntaksen til at tømme
> buffere, eller ved hvilken header jeg kan finde den i ? har prøvet med
> free(lpBuff) men det gider den ikke, og det var mit sidste bud. Selv om
> jeg nu nok mener det er rigtigt nok.
>

Jeg er ikke sikker på jeg forstår hvad du mener med at tømme en buffer;
hvis du allokerer memory med malloc(), realloc() eller calloc() skal
du kalde free(), ellers ikke.

Jeg forstår heller ikke hvad du mener med "det gider den ikke".


/bertel


Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408458
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste