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.