I am trying to separate each word from a character array and put them into a pointer array, one word for each slot. Also, I am supposed to use isspace() to detect blanks. But if there is a better way, I am all ears. At the end of the code I want to print out the content of the parameter array. 

Let's say the line is: "this is a sentence". What happens is that it prints out "sentence" (the last word in the line, and usually followed by some random character) 4 times (the number of words). Then I get "Segmentation fault (core dumped)".

Where am I going wrong? 

```
int split_line(char line[120])
{
    char *param[21]; // Here I want to put one word for each slot
    char buffer[120]; // Word buffer
    int i; // For characters in line
    int j = 0; // For param words   
    int k = 0; // For buffer chars

    for(i = 0; i < 120; i++)    
    {
        if(line[i] == '\0')
            break;
        else if(!isspace(line[i]))   
        {    
            buffer[k] = line[i];
            k++;    
        }    
        else if(isspace(line[i]))
        {
            buffer[k+1] = '\0';
            param[j] = buffer; // Puts word into pointer array   
            j++;    
            k = 0;    
        }   
        else if(j == 21)    
        {
            param[j] = NULL;    
            break;    
        }    
    }    

    i = 0;
    while(param[i] != NULL)    
    {    
        printf("%s\n", param[i]);    
        i++;    
    }    
    return 0;    
}

```