Hallo, versuche immer noch C zu lernen.
Hab mal einen String der Hexadezimalzahlen enthält versucht wieder in
einen String mit den passenden ASCII-Zeichen umzuwandeln. Das klappt
soweit. Nur hab ich ma wieder das Problem, das im Puffer bei der
Ausgabe mal wieder zusäztlich noch irgendwelcher Mist drin steht. Warum
eigentlich. Ich habe die Feldgrößen ja genau angegeben. Oder liegt das
an der help Variable, muss ich da vielleicht noch das
Terminierungszeichen mit angeben. Genauso ist mir noch nicht ganz der
Unterschied zwischen ++u und u++ ganz klar. Also u++ erhöht einfach,
aber ++u doch auch. Bei der Ausgabe kommt bei mir das selbe raus. Find
es leider in meinem C-Buch auch nicht. Kann das einer mir vieleicht
nochmal schnell sagen.
char x[]="34 61 48 61 61";
test2(x);
void test2(char* wort)
{
int x= strlen(wort);
unsigned char help[2];
unsigned char str[5];
int zahldec;
int u;
int r=0;
for(u=0;u<5;u++)
{
help[0]=wort[r];
help[1]=wort[r+1];
sscanf(help, "%x", &zahldec);
r=r+3;
str[u]=zahldec;
}
printf("%s",str);
}
> dein Verfahren ist nicht wirklich schön - es geht auch etwas schneller. Die
suche finden bestimmt schon 1000 Threads zu dem Thema, aber wir können ja erstmal
die Felher entfernen.
unsigned char help[2];
help[0]=wort[r];
help[1]=wort[r+1];
wenn help nur 2 Zeichen lang ist, hast du kein Platz für ein 0byte um
den String abzuschliessen.
>Unterschied zwischen ++u und u++ ganz klar
siehe: Preinkrement, Postinkrement, Inkrementoperator ;)
danke für die Stichwörter, jetzt hab ich es gefunden im Buch. Also lag es doch am Terminierungszeichen, wusste da gab es doch einen Unterschied zwischen char array(ohne\0) und string(mit\0). Danke!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.