使用 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.
的参数
我正在编写一个程序,我需要一个在字符串中找到的不同单词的二维数组。它从链表中获取起始字符串。
目前,这就是我所拥有的,它提供了一个段错误:
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.