I'm new to using C and I'm running into a problem. I want to use the following code to split-up a string input from the linux command line (something like date | ./date_split) into an array, which I will be later accessing and modifying. The splitting works initially but I get a segmentation fault at the end. Can anyone explain what I am doing wrong?
int main()
{
   char *indate[10];
   int i= 1;
   char str[100][50];
   fgets(&str [0], 50, stdin);
   const char s[2] = " ";
   char *token;
  /* get the first token */
  token = strtok(str, s);
  indate[i] = malloc(strlen(token)+1);
  strcpy(indate[i], token);
  printf( "Array before: %s\n", indate[i]);     
 /* walk through other tokens */
 while( token != NULL )
{
  printf( "Token before: %s\n", token );
  token = strtok(NULL, s);
  indate[i] = malloc(strlen(token)+1);
  strcpy(indate[i], token);
printf( "Token2 After: %s\n", token );
printf( "Array2 After: %s\n", indate[i]);     
i++;   
}
    return(0);
}
Which gives terminal output:
Array before: Thu
Token before: Thu
Token2 After: 20
Array2 After: 20
Token before: 20
Token2 After: Oct
Array2 After: Oct
Token before: Oct
Token2 After: 11:37:56
Array2 After: 11:37:56
Token before: 11:37:56
Token2 After: EDT
Array2 After: EDT
Token before: EDT
Token2 After: 2016
Array2 After: 2016
Token before: 2016
Segmentation fault (core dumped)