我不知道为什么第二个 while 循环没有执行。它在 result[count] = atoi 上存在访问冲突...我认为添加 strcpy 会有所帮助,因为我意识到原始字符串正在被修改,但它没有任何区别。此外,我实际上使用的是 C++,但大部分源代码都在需要速度的 C 语言中。
int* split(const char* str, const char* delim)
{
char* tok;
int* result;
int count = 0;
char* oldstr = (char*)malloc(sizeof(str));
strcpy(oldstr, str);
tok = strtok((char*)str, delim);
while (tok != NULL)
{
count++;
tok = strtok(NULL, delim);
}
result = (int*)malloc(sizeof(int) * count);
count = 0;
tok = strtok((char*)oldstr, delim);
while (tok != NULL)
{
result[count] = atoi(tok);
count++;
tok = strtok(NULL, delim);
}
return result;
}