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

char **allsubstring(char *);

// The function will return array of the substring

char** allsubstring(char *input)
{

int index1,index2,index3,noofsubstring,index4,index5;
char ** strarray;
char *buffer;
if(input == NULL) { printf("there is no string\n"); return NULL;}

noofsubstring=(strlen(input)*(strlen(input)+1))/2;

buffer = (char *)malloc(sizeof(char)*strlen(input));
strarray = (char **) malloc(sizeof(char *)*noofsubstring);

index5=-1;
for(index1=strlen(input)-1;index1>=0;--index1)
{
 for(index2=0;index2<=index1;++index2)
 {
  index4=0;
  for(index3=index2;index3<=index1;++index3)
  {
   sprintf(buffer+index4,"%c",input[index3]);
   ++index4;
  }
   sprintf(buffer+index4,"%c",'\0');//printf("%s\n",buffer);
   strarray[++index5] = (char *)malloc(sizeof(char)*strlen(buffer));
   strcpy(strarray[index5],buffer);
 }
}
 free(buffer);
 return strarray;
}