funziona, è la prima cosa che mi è venuta in mente.codice:char *ins_stringa(char *originale, const char *da_inserire, int posizione) { int lo=strlen(originale); int la=strlen(da_inserire); // se la posizione è inferiore a zero, verrà contata come 0 // se la posizione è superiore alla lunghezza dell'orig., verrà contata come ultima. if (posizione < 0) posizione=0; else if (posizione > lo) posizione=lo; // alloca la stringa temporanea char *temp; if (posizione!=lo) { int tocp= lo-posizione; int count=0; temp= (char *) malloc(sizeof(char)*tocp); do temp[count++]=originale[count+lo-tocp]; while (count<lo); } originale= (char *) realloc(originale,sizeof(char)*(lo+la+1)); int count=posizione; while (count-posizione<la) { // copia la stringa da inserire originale[count++]=da_inserire[count-posizione]; } while (count<lo+la) { originale[count++]=temp[count-la-posizione]; } originale[lo+la]='\0'; return originale; }
se hai bisogno di chiarimenti chiedi pure.

Rispondi quotando