args[0] keeps being written over as the loop progresses
char **args = malloc(sizeof(char) * (num_tokens + 1));
int i = 0;
while (token != NULL){
        args[i] = malloc(sizeof(char) * (strlen(token) + 1));
        char *heap_token = args[i];
        
        strncpy(heap_token, token, strlen(token));
        heap_token[strlen(token)] = '\0';        
        printf("Token is %s\n", heap_token);
        i++;
        token = strtok(NULL, " ");
        printf("%s\n", args[0]);
}