char ** strsplit(char *, char *)
时间: 2023-12-20 12:05:50 浏览: 209
函数strsplit的作用是将一个字符串按照指定的分隔符进行分割,并返回一个字符串数组。
函数原型如下:
```c
char ** strsplit(char *str, char *delim);
```
函数参数说明:
- str:要分割的字符串
- delim:分隔符
函数返回值:
- 返回一个字符串数组,其中每个元素都是分割后的子字符串。数组的最后一个元素为NULL。
函数实现的思路如下:
1. 首先计算分割后的子字符串的个数,即根据分隔符的出现次数来确定。
2. 根据子字符串的个数动态分配一个字符串数组,数组的大小为子字符串的个数加1(最后一个元素为NULL)。
3. 使用strtok函数按照分隔符将字符串分割成子字符串,并将每个子字符串存储到字符串数组中。
4. 返回字符串数组。
下面是一个示例实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char ** strsplit(char *str, char *delim) {
int count = 0;
char *token;
char **result;
// 计算子字符串的个数
token = strtok(str, delim);
while (token != NULL) {
count++;
token = strtok(NULL, delim);
}
// 动态分配字符串数组
result = (char **)malloc((count + 1) * sizeof(char *));
if (result == NULL) {
printf("内存分配失败\n");
return NULL;
}
// 分割字符串并存储到数组中
token = strtok(str, delim);
for (int i = 0; i < count; i++) {
result[i] = token;
token = strtok(NULL, delim);
}
result[count] = NULL;
return result;
}
int main() {
char str[] = "Hello,World,C";
char delim[] = ",";
char **result = strsplit(str, delim);
// 打印分割后的子字符串
for (int i = 0; result[i] != NULL; i++) {
printf("%s\n", result[i]);
}
// 释放内存
free(result);
return 0;
}
```
运行结果:
```
Hello
World
C
```
阅读全文