feinstes "C"..
na warum dann nicht "i=atoi(pa)" und "pa=itoa(i)" oder "sscanf(&dat[0],"%03d",&i) und sprintf(&dat[0],"%03d",i) ?
(ich würde dir aber den Tip geben, mit einem lokalem Zusatzpuffer zu arbeiten, der die 3 Zeichen "Null-terminiert" drin hat(also ein Byte länger ist) und dann mit "strncpy" auslesen und mit "memcpy" zurückschreiben... eben so wie man es in "C" immer tut
)
ansonsten wenn es immer
ASCII dezimal 3stellig mit führend "0" ist geht es auch so sehr effektiv "in feinstem C":
int i;
i=(int)(dat[0]&0x0f)*100 + (int)(dat[1]&0x0f)*10 + (int)(dat[2]&0x0f);
i= 481 * i + 171;
dat[0]=0x30 + ((i/100)%10);
dat[1]=0x30 + ((i/10)%10);
dat[2]=0x30 + (i%10);
wenn das Result auch nur 3 stellig sein darf, klappt das aber nur für "i=0" und "i=1" weil es ab Input "i>=2" im Result mehr wie 3stellig wird !?
... bist du dir sicher, die Aufgabe hier korrekt und vollständig beschrieben zu haben?