Sono riuscito a risolvere,scusate se vi ho aperto un topic per nulla, ho risolto inserendo una variabile che mi piace chiamare "di compensazione" visto che a ogni iterazione bisognava incrementare di 1 il valore del sottraendo per restare in linea con gli indici :

codice:
#include <stdio.h>#include <stdlib.h>


int main()
{
    int p,n,i,j,z,NumL,c,count,compnsx;
    char v[20];
    char aux[20];
    
    printf("\n inserire numero di elementi,punti inclusi \n");
    do
    {
               printf("\n\n max 20 elementi\n\n ");
               scanf("%d",&n);
    }
    while(n<=0 || n>20);
    
    printf("\n\n inserire sequenza parole/punti\n\n");
    scanf("%s",&v);
    
    printf(" %s ",v);
    for(i=0;i<n;i++)
    {
                    aux[i]=v[i];
    }
    
    p=0;
    for(i=0;i<n;i++)
    {                    
                         if(v[i]=='.')
                         {
                                      p++;
                         } 
    }
    
    c=0;
    compnsx=0;
    for(i=0;i<p+1;i++)
    {
                      NumL=0;
                      while(v[c]!='.' && c<n)
                      {
                                      NumL++;
                                      c++;
                                      printf(" %d-%d ",NumL,c);
                      
                      }
                      
                      count=c-compnsx;
                      NumL=NumL-compnsx;
                      c=c+1;
                      
                      z=count-1;
                      for(j=count-NumL ; j<count && z>=count-NumL ; j++)
                      {
                                       aux[j]=v[z];
                                       z--;
                      }
                      compnsx++;
    }
    
    printf(" \n\n il vettore è stato riordinato nel modo seguente \n\n ");
    printf("%s",aux);
    
    
    
    
    
    system("pause");
    return 0;
}