#include <stdio.h>
#include <stdlib.h>
// #include <string.h>

char *func(char *s)
{
  char *inp = s; // indata pointer
  char *rData = (char *)malloc(100 * sizeof(char)); // returning data area allocate
  char *r2 = rData; // returning data pointer
  while (*s) { // reach to indata end?
    while (*s == *inp) ++inp;
    *r2++ = '0' + inp - s; // count set
    *r2++ = *s; // char set
    s = inp; // indata pointer shift
  }
  return rData;
}

int main()
{
  char s[] = "1"; // initial indata
  char *p = s;
  int i;
  printf("%s\n", p);
  for (i = 0; i < 10; ++i) {
    p = func(p);
    printf("%s\n", p);
  }
  return 0;
}
