To Remove Repeating words in a string

Given a string "how are you how", you have to remove repeating word which is "how" and should output the remaining unique words as "how are you".



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

/* Getting index value(ascii sum of that word) */
#define STR_INDEX(x) ((int)x-(int)'a')

#define MAX 100000

int main(void) {
  char *s="abc def ghi jkl"; //Input string
  char *b[4];
  char *c[4];
  int index;
  int i,k;
  int hash[MAX];
  static int j=0;

    /* Set the memory of hash to zero */
  memset(hash,0,sizeof(hash));

    /* Allocate memory for Two-Dimensional Arrays */
  for(i=0;i<4;i++)
   b[i]=(char*)malloc(sizeof(char));
  for(i=0;i<4;i++)
   c[i]=(char*)malloc(sizeof(char));

    /* Split the words from 1-D and copy to 2-D */
  for(i=0;i<4;i++)
  {
    for(k=0;*(s+j)!=' ';j++,k++)
    {
      *(*(b+i)+k)=*(s+j);
    }
    *(*(b+i)+k)='\0';
    j++;
  }
  /*for(i=0;i<4;i++)
  printf("%s\n",*(b+i));
  */
  i=0;
    /* check if the hash index is already been set */
    /* If not, copy the word to another array 'c'*/
  while(i<4)
  {
    index=0;
    for(j=0;j<strlen(b[i]);j++)
     index+=STR_INDEX(*(*(b+i)+j));
    if(hash[index]==0)
    {
         /* Un comment the following if you do not want to use strcpy function */ 

      /*for(j=0;j<strlen(b[i]);j++)
      *(*(c+i)+j)=*(*(b+i)+j)*/
      strcpy(c[i],b[i]);
      /*
      *(*(c+i)+j)='\0';
      */
    }
        /* Set the hash index to value 1 */
    hash[index]=1;
    i++;
  }

    /* Finally print the output strings which are unique */
  for(i=0;i<4;i++)
   printf("%s\n",*(c+i));
  return 0;
}