Все вроде бы сделал, кроме 1 НО. Когда я ввожу например: asdcccccccngdddddddddddddnh он выдает asdc{7}ngd{13}     nh, т.е. он не сдвигает до '}'. 
Подскажите как сдвинуть оставшиеся элементы.
Код:
char CompressStr(char s[256])
{
   int k=0,dls = strlen(s),i,j,dls1=0,t,ch;
   char s1[20],sres[256]="",fix[1]=""; 
   for (i=0;i<dls;i++)
      if (s[i] == s[i+1])
         {   fix[0] = s[i];
            k=0;
            for (j=i;s[j]==fix[0];j++)
            k=k+1;
         if (k>=4)
            {
            sprintf (s1,"%c{%d}",s[i],k);
            strcat(sres,s1);
            i = i + k-1;
            dls1 = strlen(s1);
            fix[0]=' ';
            }
         else  
         {sres[i]=s[i]; 
         fix[0]=' ';
         k=0;}}
      else 
      { sres[i-k+dls1] = s[i];
         for (t=i;sres[t-1]==0 && sres[t] != 0;t++)
            {
            sres[t-k+dls1]=s[t];
            sres[t] = 0; 
            }
      }
   printf ("%d",k);
   printf ("\n");
   for (int lpa=0;lpa<dls;lpa++)
      printf ("%c",sres[lpa]);
   return sres[256];
      
}