c语言之基于strtok实现字符串分割
char str[] = "apple,banana,cherry,date,我不是萧海哇"; // 必须是可修改的字符数组
const char delimiters[] = ","; // 分隔符
char** output=NULL;
int cnt = 0;
printf("Original string: %s\n", str);
printf("Splitting by '%s':\n", delimiters);
char* token = strtok(str, delimiters);
while (token != NULL) {
//printf("Token: %s\n", token);
output =(char **) realloc(output, (cnt+1) * sizeof(char*));
output[cnt] = (char*)malloc(strlen(token)+1);
memset(output[cnt],0, strlen(token) + 1);
memcpy(output[cnt++], token, strlen(token));
// 后续调用传入 NULL
token = strtok(NULL, delimiters);
}
// 原始字符串已被修改
printf("Modified original string: %s\n", str);
for (int i = 0; i < cnt; i++) {
printf("-%s-\r\n",output[i]);
free(output[i]);
}
free(output);
效果: