我正在尝试制作一个方法,它接受一个字符串和一个数组,并使用 strtok() 将字符串拆分为字符串数组。我假设给定的数组有足够的空间,并且当数组中有空间时进行拆分。我认为这几乎是正确的,我只需要最后一次推送 :) 这是我的代码 atm:
string_to_stringarray(char* string, char** array) {
int i = 0;
array[i] = strtok(string, " ");
while (array != NULL) {
array[i++] = strtok(NULL, " ");
}
}
最佳答案
while
条件没有意义。 array
的值在函数中不会改变,所以循环是无限的(除非 array
从一开始就为 NULL
,在这种情况下对 array[0]
的第一个赋值会导致未定义的行为)。
应该是这样的:
size_t split_string(char *string, char **array) {
size_t i = 0;
char *token = strtok(string, " ");
while (token != NULL)
{
array[i++] = token;
token = strtok(NULL, " ");
}
return i;
}
这将返回找到的字符串数,并更改名称,因为用户代码无法定义以 str
开头的函数。
关于C将字符串拆分为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341985/