Save every string retuned by strtok in a dynamically allocated array with space for exactly the number of tokens in line, plus one
int i = 0;
                        int instruction_count = 0;
                        char buffer[MAXLINE + 1];
                        strcpy(buffer, line);
                        curr_token = strtok(NULL, delimiter);
                        while (curr_token != NULL)
                        {
                            instruction_count ++;
                            i ++;
                            curr_token = strtok(NULL, delimiter);
                        }
                        char* arg_array = malloc(sizeof(char*)*(instruction_count + 1));
                        if(arg_array == NULL)
                        {
                            perror("malloc");
                            exit(1);
                        }
                        char* new_curr_token = strtok(buffer, delimiter);
                        int j = 0;
                        while (new_curr_token != NULL)
                        {
                            arg_array[j] = malloc(sizeof(char)*(strlen(new_curr_token) + 1));
                            if(arg_array[j] == NULL)
                            {
                                perror("malloc");
                                exit(1);
                            }
                            strcpy(arg_array[j], new_curr_token);
                            new_curr_token = strtok(NULL, delimiter);
                        }

                        for(int i = 0; i < instruction_count; i++){
                            printf("%s\n", arg_array[i]);
                        }