以下是一个简单的 C 函数示例,可以将复杂字符串按照分隔符进行拆分:
#include
#include
/*
* 函数名称:split_string
* 功能描述:将输入的字符串按照给定的分隔符进行拆分,并将拆分结果存储到数组中。
* 参数列表:input_string(输入字符串),delimiter(分隔符),output_array(存储拆分结果的数组),array_size(存储拆分结果的数组大小)
* 返回结果:返回实际存储到数组中的拆分结果数量
*/
int split_string(char *input_string, const char *delimiter, char **output_array, int array_size)
{
char *pch;
int i = 0;
pch = strtok(input_string, delimiter);
while (pch != NULL && i < array_size) {
output_array[i++] = pch;
pch = strtok(NULL, delimiter);
}
return i;
}
int main()
{
char input_string[] = "hello,world|This,is|a test string";
char *output_array[10]; /* 设置数组大小为 10,只能存储 10 个字符串 */
int i, count;
/* 拆分字符串,并将结果存储到数组中 */
count = split_string(input_string, ",|", output_array, 10);
/* 输出结果 */
for (i = 0; i < count; i++) {
printf("output_array[%d] = %s\n", i, output_array[i]);
}
return 0;
}
上述代码中,我们使用了 strtok()
函数将输入的字符串按照 ,
和 |
两个分隔符进行拆分,最终将拆分结果存储到一个字符指针数组中。
需要注意的是,算法中设置了存储拆分结果的数组最大为 10,如果实际拆分结果超过了 10 个,那么会出现存储不完全的问题。如果需要处理更大的数据量,需要根据实际需求调整数组大小。