Forum: Compiler & IDEs Ziechen aus Char Array über Zeiger lesen?


von TobiTob (Gast)


Lesenswert?

Hallo,

ich wollte über einen Zeiger auf ein Char Buffer zugreifen bekomme aber 
nicht das richtige Ergebniss. :( Wo ist mein Fehler?

1
char chr_data_buf[32];
2
...
3
char ident;
4
char *info;
5
char tmpbuf[22];
6
7
info = chr_data_buf;
8
9
memcpy(tmpbuf, info+1, 7); 
10
tmpbuf[7] = '0';
11
tmpbuf[8] = '0';
12
tmpbuf[9] = (char)(*info+8);

Bei der Anweisung "tmpbuf[9] = (char)(*info+8);" kommt nicht das 8 
Zeichen sonder irgendein Müll, mir ist nicht ganz klar warum.

Vielen Dank im voraus... Tobi

von P. S. (Gast)


Lesenswert?

Einfach mal casten, bis der Compiler nicht mehr meckert, ist eine 
schlechte Idee.

*info dereferenziert den Zeiger "info" - sprich, du bekommst den Wert, 
auf den info zeigt. In diesem Fall das 0te Zeichen. Dazu addierst du 8.

Was du willst ist wohl entweder info[ 8] oder, wer's so mag: *( info + 
8).

von Detlev T. (detlevt)


Lesenswert?

Die Zeigerdereferenzierung hat eine höhere Priorität als die Addition. 
Es steht also da:
1
 ((*info) +8)
Und das ist nicht das, was du willst.

(Schon wieder zu langsam :) )

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.