Avatar billede jackonlinux Nybegynder
18. januar 2002 - 10:50 Der er 6 kommentarer og
1 løsning

Streng problemer...

Jeg sidder med en barcode scanner og får små 7-bit ascii værdier fra seriel-porten, som jeg trækker ud..
Normalt ville jeg bruge normal array [ ] syntax og programmering, men jeg er nødt til at dynamisk allokere pladsen..Så jeg er nødt til at bruge pointer-notation:
Se hér:

if(bufferin !=bufferout)
            {
            //Fjern 8. bit med AND
                        buffer[bufferout]&=0x7f;
                        //ch lig med 7-bit ascii
            ch=buffer[bufferout];
    //?? Samme som ? number[index]=ch;
    *(number+index)=ch;
    bufferout++; //Buffer inkrementér...

Jeg får en værre gang fnidder ud når jeg vil udskrive.. *(number+index), som %c
-hva\' er dét jeg gør galt.. !


Avatar billede jpk Nybegynder
18. januar 2002 - 10:55 #1
Jeg er ikke helt med på hvad det er du vil, men måske du tænker på
*number[index]=ch; ???


Avatar billede jackonlinux Nybegynder
18. januar 2002 - 11:04 #2
Du mner at jeg kan gå i mit array of char via [ ] ???
Jeg skal skrive en enkelt ascii i en byte og derefter inkrementere, så jeg senere får en hél streng ;)
Avatar billede jackonlinux Nybegynder
18. januar 2002 - 11:06 #3
Forresten siger min compiler at:
*number[index]=ch; -- giver forkert indirection
Avatar billede jpk Nybegynder
18. januar 2002 - 11:07 #4
stadigvæk ikke helt med...
Hvis du bare vil skrive en char til dit array, kan du jo gøre som du selv har skrevet:
number[index]=ch;

Avatar billede jackonlinux Nybegynder
18. januar 2002 - 11:10 #5
Ja men jeg er nødt til at dynamisk allokere , men det er måske iorden at skrive number[index] så ?

Jeg kører en gammeldavs malloc på den med type-casting
Avatar billede jpk Nybegynder
18. januar 2002 - 11:14 #6
number[index] er jo bare en pointer beregnet som:
adressen på number + index*størrelsen på datatypen.

Altså giver:
*(number + 3*sizeof(char))
det samme som:
number[3]

Avatar billede professoren Nybegynder
23. januar 2002 - 13:48 #7
Hvorfor dynamisk alloc?  Når du har en array med index N, vil C compileren atuomatisk alloc en array med storrelsen N +1

Du kan også initilisere array'en, så vil den automatisk bliv alloc' den rigtig plads...
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