Ciao, la funzione void rightstringa(char *cptr,char *dptr,int nchar) se non ho capito male dovrebbe copiare gli ultimi nchar di cptr in dptr. Io ho sistemato e semplificato un pochino questa funzione:
int lenstringa(const char *cptr)
{
int k=0;
while (*cptr != '\0')
{
*cptr++;
k++;
}
return k;
}
void rightstringa(char *cptr,char *dptr,int nchar)
{
int tot = lenstringa(cptr);
int offs = tot - nchar;
for(int i=offs, c=0;i<tot;i++,c++)
dptr[c]=cptr;
dptr[tot]='\0';
}
credo che cosi dovrebbe andare
la tua funzione invece l'ho sistemata per facilitarne la lettura e tolto qualche errore viene:
void rightstringa(char *cptr,char *dptr,int nchar, int b)
{
char e=' ';
int indy=0,offi=0,k=0;
int totale=0;
totale = lenstringa (cptr);
offi = totale - nchar;
cptr += offi;
for (indy=0; indy <=nchar;indy++)
{
e=*cptr;
*dptr = e;
*cptr++; *dptr++;
}
e='\0';
*dptr = e;
}