使用 strtok 将我的字符串(以空格分隔)拆分为二维字符串数组时出现段错误,如何避免?

Segfault when employing strtok to split my string (delimited by spaces) into a 2D array of strings, how to avoid?

我正在编写一个程序,我需要一个在字符串中找到的不同单词的二维数组。它从链表中获取起始字符串。

目前,这就是我所拥有的,它提供了一个段错误:

int main () {
    char word_pal[120]; //max length needed is 120
    char *token;
    char pal_arr[64][120];
    int i = 0;
    strcpy(word_pal, header->name); //header->name is "string to be split"
    token = strtok(word_pal, " ");
    strcpy(pal_arr[i], token);
    while (token != NULL) {
        i++;
        token = strtok(NULL, " ");
        strcpy(pal_arr[i], token);
    }
    return 0;
}

我在整个过程中放了一些打印语句,似乎是 token = strtok(NULL, " "); 行把事情搞砸了,但我不知道为什么。

我该如何解决这个问题?

strtok returns NULL时,变量token将是NULL。 然后你使用 token(可能是 NULL)作为 strcpy.

的参数